【Vitest】setTimeoutした処理をモック化したタイマーでテストする
function someAct() { setTimeout(() => { someProcess(); }, 5000);}setTimeoutなどの非同期処理を Vitest でテストしたい際。
describe("some describe", () => { beforeEach(() => { vi.useFakeTimers(); });
afterEach(() => { vi.useRealTimers(); });
it("5秒後にxxされる", () => { someAct();
vi.advanceTimersByTime(5000); // 5秒進める someAssert(); });});vi.useFakeTimers()でタイマーをモック化し、vi.advanceTimersByTime()でタイマーを進める。テスト後はvi.useRealTimers()でタイマーを破棄する必要がある。