toBe vs toEqual
toBe membandingkan identitas (seperti ===) — cocok untuk angka, string, boolean. Untuk object dan array wajib toEqual, karena dua object dengan isi sama tetap merupakan object berbeda. Salah memilih di sini adalah kebingungan nomor satu bagi yang baru menulis test. Untuk angka pecahan, hindari toBe karena hasil perhitungan seperti 0,1 + 0,2 tidak persis — pakai toBeCloseTo yang memang disediakan untuk itu.
👀 Contoh dulu
// nilai sederhana → toBe
expect(5 * 2).toBe(10);
expect('ab').toBe('ab');
expect(true).toBe(true);
// object & array → toEqual
expect({ a: 1 }).toEqual({ a: 1 }); // ✅ lolos
// expect({ a: 1 }).toBe({ a: 1 }); // ❌ gagal: dua object berbedaHasilnya: Semua assertion dengan matcher yang tepat lolos; baris toBe pada object akan gagal.
💡 Aturan cepat: kalau nilainya bisa 'dipegang langsung' (angka/string/boolean) pakai toBe, kalau berisi struktur pakai toEqual.
📝 Sekarang giliranmu
Tulis dua assertion: expect(2 + 1).toBe(3) untuk angka, dan expect([1, 2]).toEqual([1, 2]) untuk array.