Testing: Mock and Stubs

Qurrata Adrianus
Dekowarehouse Project
2 min readMay 2, 2018

Kamu pasti pernah mendengar kata mock dan stubs, terutama apabila kamu familiar dengan TDD. Apakah kamu tahu apa yang dimaksud dengan mock dan stubs?

Mock dan Stubs merupakan implementasi ‘dummy’ dari suatu object pada suatu testing. Object yang sama dapat digantikan dengan stub, sedangkan mock bergantung pada testnya. Loh, jadi mock dan stub berbeda?

Yap, benar! Mock dan stub merupakan dua hal yang berbeda. Nah, Yuk simak penjelasan berikut!

Understanding Stubs

Stubs dapat disebut juga dengan input untuk code yang akan dilakukan test. Saat dipanggil, stub akan bekerja dengan cara tertentu, seperti me-return fixed value, throw exception, kalkulasi return value berdasarkan parameter, dan lan sebagainya. Stub biasanya digunakan untuk mensimulasikan behavior dari kolaborator yang berhubungan dengan code tersebut.

Saat menggunakan stub, kamu akan membuat suatu komponen ‘fake’ dengan tujuan untuk testing dimana method tersebut tidak akan melakukan apapun karena sudah diset dengan fungsi tertentu.

Understanding Mock

Mock merupakan output dari code yang sedang ditest. Pada situasi tertentu, tentunya code akan berinteraksi (atau tidak) dengan sebuah kolaborator, seperti pass param, dll. Nah, mock ini adalah sebuah bagian dari test dimana Kamu harus melakukan setup sesuai dengan expectation.

Perbedaannya

Pada suatu test, biasanya mock dilakukan dengan tahapan sebagai berikut:

  • initialize
  • set expectations
  • excercise
  • verify

Sedangkan pada Stub, biasanya dengan tahapan berikut:

  • initialize
  • excercise
  • verify

Implementasi Pada Project

Tentunya pada project Dekowarehouse pernah menggunakan salah satu dari kedua hal tersebut. Contohnya adalah sebagai berikut:

it(‘should go to the previous slide’, () => { 
const wrapper = shallow(<Slider id=’1'/>);
wrapper.instance().previousSlide();
expect(wrapper.instance().state.slidecount).toEqual(3);
});

Nah, bagaimana? Sudah tercerahkan?

--

--