Latihan 3 dari materi Matcher & Assertions di Testing — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Kode awal sudah punya divide(a, b) yang melempar Error('Cannot divide by zero') saat b nol. Biarkan, lalu tulis test-nya di bawah:
Buka describe("divide", () => { ... }) dan satu it di dalamnya.
Bungkus pemanggilannya dalam function: () => divide(10, 0), supaya matcher-nya yang menjalankan, bukan kamu.
Periksa dengan toThrow: expect(() => divide(10, 0)).toThrow('Cannot divide by zero').
Yang dinilai: kodenya memakai expect dan toThrow, dan semua test-mu benar-benar lulus saat dijalankan. Kalau kamu menulis expect(divide(10, 0)) tanpa pembungkus, error-nya meledak duluan dan test-nya gagal.
Hint
Kalau divide(10, 0) dipanggil langsung di dalam expect, error-nya meledak sebelum matcher sempat menangkapnya.
Serahkan function-nya, bukan hasilnya: () => divide(10, 0). Lalu sambungkan .toThrow(...) dengan potongan pesan error-nya.