Testing Observable dengan RxTest


Setelah merefresh bagaimana menggunakan RxSwift untuk keperluan pengembangan iOS, minta tidak lupa dan kosong. Saya belajar bahasa inggris sambil melakukan pengujian Diamati memakai RxTest.

Untuk studi kasusnya yaitu pada scroll tak terbatas di UICollectionView pada aplikasi yang menggunakan API dari Pokeapi. Jadi, yang akan di tes, apakah data pada tampilan koleksi akan bertambah sebanyak 20 item, setiap akhir dari UICollectionView. Misalkan saya punya tampilan model sederhana seperti ini



Bagaimana, kita mulai buat soal ujinya dulu, sederhana saja ...

Acara: - (0, ()) - (100, ()) - (150, ()) - (200, ()) - (250, ()) --->
Hasil yang diharapkan: 5 * 20 item = 100 item
Oke, bagaimana langkah menulis testnya?

Buat test scheduler terlebih dahulu. Ini digunakan untuk melakukan proses simulasi berlangganan pembaruan yang dapat diamati.
Buat mock diamati yang akan digunakan untuk pengujian. Mock dapat diamati inilah sebagai input pada model tampilan.
Lalu lakukan pernyataan terhadap hasil transformasi dari tampilan model terhadap kasus uji yang kita miliki.
Terbukti test runner yang berhasil ditulis sebagai berikut



Baik, akan saya jelaskan satu per satu.

Bagian 1 bagaimana cara kita membuat schedulernya. Ini digunakan untuk menjalankan simulasi untuk berlangganan rilis yang dapat dilihat dari tampilan model.

Bagian 2 itu yang saya sebut diawal sebagai mock peristiwa yang diamati. Isinya adalah rangkaian acara yang akan digunakan pada diamati, seperti berikutnya (elemen), selesai (), atau kesalahan (kesalahan). Pada TestableObservable ini, ada 2 parameter untuk selanjutnya, parameter pertama adalah waktu virtual kapan dia melakukan memancarkan item pada diamati, parameter kedua ya item yang akan di emit ke diamati. Dan dari mock diamati acara tadi kita akan buat mock observablenya.

Bagian 3, kita buat melihat modelnya, lalu mengejek diamati tadi jadikan input pada tampilan model untuk ditransformasikan.

Bagian 4, kita buat pengamat yang akan menerima nilai dari tampilan model setelah proses transformasi. Pada saat ini, penjadwal harus diaktifkan dapat mengubah acara hasil transformasi.

Terakhir di bagian 5 adalah proses pernyataan, untuk mengatur apakah rangkaian acara pada pengamat yang dibuat di bagian 4 sama dengan rangkaian acara yang dibuat di bagian 5.

Penutup
XCTest dan RxTest berguna untuk melakukan pengujian kode program yang menggunakan RxSwift. Tulisan ini juga sebagai catatan pribadi saya untuk memulai mendapatkan konsep Bagaimana menjalankan² melakukan pengujian kode yang menggunakan RxSwift.

Repo kode lengkap diatas bisa diakses di sini :)

Referensi
https://github.com/ReactiveX/RxSwift/blob/master/Documentation/UnitTests.md