Ketika kita membuat unit/integration test, kita harus mengisolasi sebuah fungsi dari side effect yang ada. Agar lebih mudah menjelaskannya saya akan memakai contoh kasus ketika ingin mengetes component Servers di project kami.
Untuk mengambil data server apa saja yang ada, saya memanggil fungsi API.getServers() di componentDidMount(). Ketika ingin mengetes apakah list server ditampilkan, seharusnya kita tidak lagi bergantung dengan fungsi API.getServers() karena sudah diluar dari scope, dan diasumsikan fungsi getServers selalu berhasil dijalankan.
Untuk mengatasinya, kita harus melakukan mocking pada class API. Caranya? Dengan menggunakan Jest.
Fungsi jest.mock() menyebabkan semua fungsi di class API bisa dimock hasilnya. Jest menyediakan banyak fungsi untuk melakukan mocking terhadap return dari suatu fungsi tergantung tipe returnnya. Karena fungsi getServers merupakan promise, maka fungsi yang sesuai adalah mockResolvedValue().
Di test diatas, ketika kode memanggil fungsi getServers dan getServerDetail, aplikasi tidak akan memanggil fungsi aslinya, namun akan langsung mereturn value yang sudah ditentukan di fungsi mockResolvedValue.
Dengan begitu, kita dapat mengisolasi suatu fungsi agar bisa ditest dengan baik.