Halo semuanya!
Hal baru lainnya dalam daftar kursus kami:
“Pengembang iOS” , yang berarti bahwa saatnya telah tiba untuk bagian-bagian menarik yang kami temukan selama persiapan kursus. Pada artikel ini, penulis mem-parsing cara merekam dan memutar permintaan API untuk tes UI.

Ayo pergi.
Saya baru-baru ini mengintegrasikan
Kedutaan dan
Succulent ke dalam tes UI saya. Jika Anda perlu menjalankan tes UI untuk aplikasi yang menggunakan API ini, panduan ini dapat menawarkan alternatif untuk tiruan / rintisan.
Masalahnya:
- Aplikasi menggunakan data API untuk mengisi UI;
- Menggunakan bertopik mungkin memerlukan penulisan dan pemeliharaan sejumlah besar file;
- Saat menggunakan tiruan, logika aplikasi mungkin berbeda dari panggilan jaringan yang sebenarnya;
- Menggunakan API koneksi ini - EXECLY EXCLUDED, terlalu banyak variabel dan macet
Kedutaan + Solusi SukulenSolusinya adalah membuat server lokal yang mengarahkan aplikasi Anda (menggunakan Kedutaan Besar), dan untuk merekam / menjawab panggilan jaringan (menggunakan Succulent).
Pertama kali Anda menjalankan tes, panggilan jaringan standar akan dibuat dan ditulis ke file jejak.
Lain kali, panggilan jaringan yang sama ini akan dijawab secara otomatis. Keren bukan? Tidak perlu menulis tiruan, Anda dapat mensimulasikan lag dan kesalahan, dan semua ini berjalan di dalam mesin build, di dalam XCtest!
Bagaimana cara menggunakannya?1. Unduh dan pasang di bawah Succulent. Pada saat penulisan ini, tidak ada pod di cocoapods.com, jadi Anda perlu mengunduh sumbernya dan menambahkannya ke sub-file Anda sebagai berikut:
target “UI Tests” do inherit! :search_paths pod 'Succulent', :path => 'Succulent/' end
Sukulen diperlukan oleh Kedutaan Besar dan akan dipasang secara otomatis.
2. Buat file UI uji baru dan salin instruksi dari
Succulent GitHub . Akibatnya, Anda harus mendapatkan file ini:
import Succulent @testable import TestAppUITests class SucculentTestUITest: XCTestCase { private var succulent: Succulent! var session: URLSession! var baseURL: URL! /// The name of the trace file for the current test private var traceName: String { return self.description.trimmingCharacters(in: CharacterSet(charactersIn: "-[] ")).replacingOccurrences(of: " ", with: "_") } /// The URL to the trace file for the current test when running tests private var traceUrl: URL? { let bundle = Bundle(for: type(of: self)) return bundle.url(forResource: self.traceName, withExtension: "trace", subdirectory: "Traces") } /// The URL to the trace file for the current test when recording private var recordUrl: URL { let bundle = Bundle(for: type(of: self)) let recordPath = bundle.infoDictionary!["TraceRecordPath"] as! String return URL(fileURLWithPath: "\(recordPath)/\(self.traceName).trace") } override func setUp() { super.setUp() continueAfterFailure = false if let traceUrl = self.traceUrl { // Replay using an existing trace file succulent = Succulent(traceUrl: traceUrl) } else { // Record to a new trace file succulent = Succulent(recordUrl: self.recordUrl, baseUrl: URL(string: "https//base-url-to-record.com/")!) } succulent.start() let app = XCUIApplication() app.launchEnvironment["succulentBaseURL"] = "http://localhost:\(succulent.actualPort)/" app.launch() } override func tearDown() { super.tearDown() } }
Saat Anda memulai Succulent, Anda dapat menentukan URL dasar, berkat semua permintaan termasuk URL dasar akan dicatat, dan semua yang lain akan diabaikan.
3. Tambahkan baris berikut ke target Info.plist UI pengujian Anda:
<key>TraceRecordPath</key> <string>$(PROJECT_DIR)/Succulent/Traces</string>
4. Arahkan aplikasi ke server lokal.
Untuk melakukan ini di dalam aplikasi utama Anda, Anda perlu memeriksa apakah variabel lingkungan "succulentBaseURL" ada dan jika sudah dikonfigurasi.
Ini menunjukkan url server web lokal Anda dan dikonfigurasi dalam fungsi setUp, yang disalin di atas pada langkah 2.
Itu saja, mungkin!
Sekarang ketika Anda melakukan tes sederhana dan menjalankannya, Succulent akan menulis permintaan API dan membuat file .trace di folder Traces dari direktori target tes UI Anda. Lain kali Anda menjalankan tes yang sama, itu akan memeriksa apakah file itu ada dan menjalankannya.
Anda dapat membuka file .trace langsung dari Xcode, menonton semua permintaan jaringan dan memodifikasinya sesuai kebutuhan.
Semoga artikelnya ternyata bermanfaat, berikut ini pizza:

AKHIR
Seperti biasa, kami menunggu komentar, pertanyaan, dll. Di sini atau Anda dapat melihat
Open Day dan mengajukan pertanyaan kepada
guru di sana.