Testing: Mock Object dan Stub
Dalam artikel sebelumnya, proses pengembangan aplikasi PsychoTip menerapkan TDD. Kali ini saya akan membahas penerapan test double dalam aplikasi PsychoTip.
Test double adalah istilah yang digunakan Gerard Meszaros untuk setiap kasus di mana kita menggantikan production object untuk kepentingan test. Variasi test double yang akan saya bahas adalah Mock Object dan Stub.
Stub
Stub adalah objek yang menyimpan data yang telah ditentukan dan menggunakannya ketika terjadi pemanggilan saat melakukan test. Stub digunakan ketika ketika kita tidak bisa atau tidak ingin melibatkan objek yang akan memberikan data asli atau ketika terdapat side effects yang tidak diinginkan.
Contohnya, dalam proyek kami, kami menggunakan branch-branch yang berbeda pada setiap user story. Dalam setiap branch tersebut hanya terdapat fungsi yang berhubungan, sebagian lagi tidak ada. Contoh pada branch register, setelah user berhasil melakukan registrasi maka interface akan berpindah ke halaman dashboard. Tapi pada branch register tidak ada halaman dashboard. Maka agar fungsi register tetap dapat di test sudah berhasil atau belum, kami membuat kelas stub.
kelas diatas hanyalah berupa halaman kosong, karena hanya bertujuan untuk menguji apakah button pada halaman register bekerja dan akan berpindah halaman ke ‘Dashboard’.
Mock Object
Mock Object adalah implementasi tiruan untuk interface atau kelas di mana Anda menentukan output panggilan metode tertentu. Mock Object dikonfigurasikan untuk melakukan perilaku tertentu selama test.
Contoh pada aplikasi kami, pada Login, kami tidak ingin benar-benar memanggil database untuk melakukan validasi setiap menjalankan test, karena itu kami menggunakan mock untuk kelas Login agar kami bisa melakukan test tanpa menggunakan kelas yang sebenarnya.
Kami menggunakan library Mockito. Dengan Mockito kita bisa membuat dan mengkonfigurasi mock object.
Sekian penjelasan mengenai penerapan mock object dan stub. Terima kasih.
Referensi: