Test Double - Objek Fake
Silahkan baca lagi mengenai Test Double dan Jenis Test Double untuk pemahaman lebih lengkap
Pendahuluan
Kalau sebelumnya kita sudah tahu mengenai Test Double, maka sekarang kita akan melihat salah satu dari jenis Test Double itu yaitu Objek Fake
Objek Fake adalah objek tiruan yang dibuat dengan implementasi baru yang berbeda dari fungsi aslinya.
Contohnya
Objek Fake merupakan objek baru yang benar-benar memiliki code di dalamnya. Istilahnya adalah objek yang mempunyai Working Implementation.
Kalau Spy, Stub, atau Mock merupakan object yang biasanya dibuat dengan bantuan proxy design pattern.
Jadi bukan benar-benar objek aslinya, tetapi Spy, Stub, atau Mock sebagai objek perantara yang menjembatani dengan objek aslinya.
Kalau objek Fake benar-benar objek aslinya, tetapi dengan implementasi yang berbeda dengan code aslinya.
Lalu bagaimana penerapannya.?
Karena Objek Fake ini adalah objek real, maka biasanya dibuat dengan cara manual.
Beda dengan objek Spy, Stub, atau Mock yang biasanya diakomodasi/mempunyai anotasi di beberapa Testing Framework, objek Fake ini dibuat sendiri of Software Engineering/Developer ketika membutuhkan unit testing.
Akibatnya, membuat objek Fake ini mungkin lebih susah waktu inisiasi dan setup nya.
Caranya bisa saja dengan memanfaatkan konsep Code to Interface, dimana untuk keperluan eksekusi, akan diinject objek aslinya.
Sementara untuk Unit Test, maka yang diinject adalah objek Fake nya.
Apa saja sebenarnya isi dari objek Fake ini ?
Tujuan dibuatnya objek Fake ini adalah agar ketika Unit Testing, maka resikonya lebih rendah daripada memanggil fungsi aslinya.
Contoh aktifitas yang beresiko seperti CRUD ke database asli, koneksi ke API external, dll.
Oleh karenanya isi dari objek Fake ini tentunya adalah code yang tidak beresiko, seperti :
- isinya cuma kosong saja, atau cuma log message saja.
- cuma koneksi dan CRUD ke database bertipe memori.
- koneksi IO ke local machine
- memanggil code REST API ke REST API umum.
Apa saja kelebihan dan kekurangan dari objek Fake ini ?
Kelebihannya :
- Tidak memerlukan framework testing atau library pihak ketiga.
- Lebih natural dan intuitif. Ide objek Fake adalah ide awal dari perkembangan objek Mock, Spy, dan Stub nantinya.
Kekurangannya :
- Lebih sulit waktu inisiasi objek dan menempelkannya ke Objek yang sedang di test.
- Harus membuat object real, secara konsep agak kurang bagus, karena tergantung dari object yang real.