Testing: Mock vs Stub

Tyagita Larasati
PPL cewe semua!
Published in
2 min readApr 29, 2019
Source: https://www.rishabhsoft.com/wp-content/uploads/2011/05/Entry-and-Exit-Criteria-for-Testing.jpg

Terkadang dalam pembuatan test, terdapat test yang bergantung pada environment dan hal ini akan sulit dilakukan pembuatan testnya. Untuk itu dapat dilakukan yang namanya Test Double.

source: https://blogs.sap.com/wp-content/uploads/2015/01/testdouble1_628992.png

Test double adalah test yang menggunakan object yang memiliki properti mirip dengan production environment namun jauh lebih sederhana. Dengan menerapkan test ini akan, mempermudah kita untuk mengurangi complexity dan verify code secara independent.

Terdapat 5 jenis test double:

source: http://xunitpatterns.com/Types%20Of%20Test%20Doubles.gif

Mock Object

Mocks are objects that register calls they receive.
In test assertion we can verify on Mocks that all expected actions were performed.

Mock object dilakukan menggunakan framework. Dengan menggunakan mock, pembuatan test akan lebih fleksibel dibandingkan stub. Dikarenakan mock tidak bergantung pada implementasi yang telah ada. Alasan lain penggunan mock adalah ketika tidak ada cara yang mudah untuk verify code yang akan kita eksekusi.

Contoh mock object yang ada pada sumbang.in

Stub

Stub is an object that holds predefined data and uses it to answer calls during tests. It is used when we cannot or don’t want to involve objects that would answer with real data or have undesirable side effects.

Stub biasa digunakan untuk melakukan unit test menguji sebuah class atau method yang memberikan output untuk input yang diketahui. Stub test merupakan test yang seolah-olah melakukan pengambilan dari database namun tidak. Dengan melakukan stub test kita akan melakukan pembuatan data dummy yang akan di test behaviornya.

Contoh stub pada sumbang.in

Potongan kode diatas ini adalah contoh stubbing yang terdapat pada test backend. Test diatas kita membuat data dummy tanpa mengakses database untuk melakukan pembuatan user, lalu dicek apakah pembuatan user tersebut berhasil atau tidak melaui assertion output yang dihasilkan.

--

--