Latihan 3 dari materi Testing Kode Asinkron di Testing — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
delayedHello(callback) di kode awal sudah ada: dia memanggil callback("hello") setelah 1000 ms lewat setTimeout. Biarkan, lalu tulis test-nya di bawah:
Satu describe("delayedHello", () => { ... }) berisi satu it(...).
Di awal test, panggil vi.useFakeTimers(), buat const callback = vi.fn(), lalu jalankan delayedHello(callback).
Pastikan belum ada panggilan: expect(callback).not.toHaveBeenCalled().
Majukan jam dengan vi.advanceTimersByTime(1000), lalu expect(callback).toHaveBeenCalledWith("hello").
Tutup dengan vi.useRealTimers().
Yang dinilai: kodenya memuat useFakeTimers dan advanceTimersByTime, dan semua test yang kamu tulis lulus.
Hint
Test-nya gak menunggu 1 detik sungguhan. Ganti jam dengan jam palsu, majukan sendiri, lalu periksa callback-nya.
Urutannya: vi.useFakeTimers(), lalu panggil delayedHello dengan vi.fn(), majukan jam 1000 ms, periksa, dan kembalikan jam asli dengan vi.useRealTimers().