【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()
でタイマーを破棄する必要がある。