Mengapa Unit Testing Penting?
Unit testing membantu developer menemukan bug lebih awal, melakukan refactoring dengan lebih aman, dan memastikan kode tetap berjalan sesuai harapan. Test yang baik juga menjadi dokumentasi perilaku kode dan meningkatkan kepercayaan diri saat melakukan deployment.
Setup Jest
Untuk project Node.js, Jest dapat dipasang sebagai development dependency:
npm install -D jest
Jika menggunakan TypeScript, tambahkan konfigurasi yang sesuai seperti ts-jest. Untuk aplikasi React, developer juga dapat menggunakan Jest dengan React Testing Library atau alternatif seperti Vitest.
Menulis Test yang Baik
Gunakan pola AAA (Arrange, Act, Assert) agar struktur test mudah dipahami:
-
Arrange – siapkan data dan kondisi awal
-
Act – jalankan fungsi yang ingin diuji
-
Assert – periksa hasil yang diperoleh
Setiap test sebaiknya fokus pada satu behavior dengan nama yang menjelaskan kondisi dan hasil yang diharapkan.
Mocking dalam Jest
Mocking digunakan ketika test membutuhkan dependency tertentu tanpa menjalankan implementasi aslinya.
Beberapa fitur yang sering digunakan:
-
jest.fn()untuk membuat mock function -
jest.mock()untuk melakukan mock pada module -
jest.spyOn()untuk memantau pemanggilan function tertentu
Dengan mocking, developer dapat mengisolasi unit yang sedang diuji dan membuat test lebih mudah dikontrol.
Testing Kode Asynchronous
Kode asynchronous perlu diuji dengan cara yang tepat agar Jest menunggu proses selesai. Gunakan async/await atau return Promise dari test.
Selain kondisi berhasil, uji juga error handling agar aplikasi tetap dapat menangani kegagalan dengan baik.
Fokus pada Coverage yang Bermakna
Code coverage bukan satu-satunya ukuran kualitas testing. Coverage 100% tidak berarti aplikasi bebas bug jika test yang dibuat tidak menguji behavior penting.
Fokuskan testing pada business logic, edge cases, validasi, dan error handling. Coverage sekitar 80% dengan test yang bermakna lebih berguna daripada coverage tinggi yang hanya mengejar angka.
Kesimpulan
Unit testing dengan Jest membantu menjaga kualitas JavaScript sekaligus membuat proses development lebih aman. Mulai dari test sederhana, gunakan mocking seperlunya, dan prioritaskan behavior penting daripada sekadar mengejar persentase coverage.