180 文字
1 分
VitestでsetTimeoutやsetIntervalなど時間が関与したコードのテストを記述する
Fake Timer API
Vitest では、次のようにして時間を能動的にコントロールしたテストを記述することができる。
beforeEach(() => { vi.useFakeTimers();});afterEach(() => { vi.useRealTimers();});it("...", () => { // Arrange... // Act... vi.advanceTimersByTime(150); // Assert...});
他にも多くのメソッドが提供されている。
他のフレームワークにおける API
他のテストフレームワークでも同様の機能を提供しているものがある。
Jest Timer Mocks
Vitest と同様の API が提供されている。
https://jestjs.io/ja/docs/timer-mocks
jest.useFakeTimers();it("...", () => { // Arrange... // Act... jest.advanceTimersByTime(1000); // Assert...});
Playwright Clock API
Playwright では Clock API を利用することで時間を操作することが出来る。
https://playwright.dev/docs/api/class-clock
test("...", async ({ page }) => { // Arrange... await page.clock.install({ time: new Date("2001-01-01T00:00:00") }); // Act... await page.clock.runFor("00:10"); // Assert...});
VitestでsetTimeoutやsetIntervalなど時間が関与したコードのテストを記述する
https://blog.ohirunewani.com/posts/vitest-faker-timer/