Pengujian yang menunggu secara real-time lambat dan bisa gagal saat dimuat. Jam yang dapat dikontrol membuat perilaku berbasis waktu dapat diulang, namun pengatur waktu palsu harus dibatasi pada kode yang benar-benar menggunakan pengatur waktu.

Jadikan jam sebagai ketergantungan

  • Masukkan jam atau penjadwal ke dalam kode yang memiliki tenggat waktu, debounce, atau interval polling.
  • Majukan waktu palsu dengan sengaja dan tunggu janji yang dihasilkan atau pembaruan negara.
  • Pulihkan pengatur waktu nyata setelah setiap pengujian sehingga satu pengujian tidak dapat mengubah lingkungan yang lain.
clock.advanceBy(500);
await expect(result).resolves.toEqual(expected);

Uji batasnya, bukan tidur

Hindari penundaan tetap seperti menunggu 500 milidetik hingga permintaan selesai. Tunggu kondisi spesifik yang dapat diamati, dan uji kasus tepat sebelum, pada, dan setelah tenggat waktu ketika batasan tersebut penting.

Jika pengatur waktu palsu membuat tes terhenti, periksa antrian pengatur waktu dan janji yang tertunda. Menggabungkan waktu tiruan dengan perpustakaan yang menjadwalkan pekerjaannya sendiri dapat menimbulkan masalah penyiapan, bukan bug produk.