Pengejekan pengujian unit iOS menggunakan swifty mocky
Swift dirancang agar aman — mendukung refleksi hanya-baca. Jadi, tidak ada cara untuk memodifikasi program Anda saat runtime. Secara keseluruhan bagus, kode dijalankan seperti yang diharapkan, dan komponen lain tidak dapat mengubahnya. Tapi mengarah kembali ke topik kita, semua kerangka tiruan dibangun di atas refleksi untuk dapat mengubah kelas, tipe, dan objek saat runtime.
Bahasa ini membutuhkan pahlawan supernya untuk menulis kode yang dapat diuji, dan kami mengenal mereka dengan baik — protokol dan ekstensi! Apa pun implementasinya — class, enum, atau struct — tujuan protokol tetap ada — untuk mendefinisikan abstraksi dan menambahkan fungsionalitas baru ke tipe, bahkan yang tidak kami berutang.
Apa yang bisa kita lakukan untuk mengejek?
Gunakan meta-pemrograman untuk menghasilkan implementasi tiruan yang lengkap.
Mereka adalah banyak perpustakaan yang melakukan pekerjaan tiruan untuk pengujian unit, kebanyakan poplar adalah Cuckoo dan swifyMocky .
Pada artikel ini, saya akan memberikan gambaran bagaimana kita bisa melakukan mocking menggunakan SwiftyMocky.
SwiftyMocky
https://github.com/MakeAWishFoundation/SwiftyMocky
Keuntungan
- Secara otomatis mengolok-olok protokol Swift
- Mendukung obat generik
- Pengaturan langsung dan ringan
- Dokumentasi yang bagus
- Sintaks yang bagus dan mudah (yang menggunakan pelengkapan otomatis)
- Tandai protokol untuk diejek
- Setiap protokol di direktori sumber, yang memiliki anotasi ini, akan ditambahkan ke Mock.generated.swift
- Semua tiruan telah memberikan metode (dapat diakses baik sebagai metode instan atau fungsi global), dengan sintaks yang mudah digunakan, memungkinkan untuk menentukan apa yang harus menjadi nilai pengembalian untuk metode yang diberikan (berdasarkan atribut yang ditentukan)
- Semua tiruan memiliki metode verifikasi (dapat diakses baik sebagai metode instan atau fungsi global), dengan sintaks yang mudah digunakan, memungkinkan untuk memverifikasi, apakah suatu metode dipanggil pada tiruan, dan berapa kali. Ini juga menyediakan cara mudah untuk menentukan, apakah atribut metode itu penting (dan yang mana)
- Semua tiruan memiliki metode perform (dapat diakses baik sebagai metode instance atau fungsi global), dengan sintaksis yang mudah digunakan, memungkinkan untuk menentukan penutupan, yang akan dieksekusi setelah metode stubbed dipanggil
Mendirikan
- Instal menggunakan Cocoapods
- Instal CLI untuk pembuatan tiruan yang mudah
> dokter swiftymocky # memvalidasi pengaturan Anda
> swiftymocky generate # generate mocks
- Pembuatan tiruan didasarkan pada file Mockfile.yml dengan kemungkinan untuk mengecualikan aturan lint cepat menggunakan dikecualikanSwiftLintRules
Tidak begitu banyak alat yang kami, sebagai pengembang, miliki untuk mengejek Swift, dengan beberapa batasan ketat karena akses runtime terbatas bahasa. Dan di sini kita sampai pada pertanyaan kritis — gunakan atau tidak menggunakan kerangka kerja eksternal untuk mengejek.
Paman Bob yang terkenal terus tidak menggunakannya sebanyak mungkin; dia berkata: “Titik di mana Anda mulai membutuhkan kerangka kerja tiruan adalah titik di mana hubungan antara pengujian dan kode Anda menjadi terlalu tinggi. Namun, setelah itu, Anda harus berusaha untuk menjaga sambungan antara kode dan pengujian cukup rendah sehingga Anda tidak perlu terlalu sering menggunakan kerangka tiruan.”
Terima kasih telah membaca! Jika Anda menyukai artikel ini, silakan bertepuk tangan agar orang lain juga dapat membacanya :)
Selamat coding :v: