Jestが提供する偽のタイマーを利用することで、現在時刻をモックします。
手順
ファイルを作成し、以下のように編集する。
import { getNowDate } from '../service/dateService';
describe('getNowDate: 現在時刻を文字列として取得する', () => {
beforeEach(() => {
jest.useFakeTimers();
});
afterEach(() => {
jest.useRealTimers();
});
test("実行すると、'20230101000000'を返す", () => {
const mockDate = new Date('2023-01-01T00:00:00');
jest.setSystemTime(mockDate);
expect(getNowDate()).toBe('20230101000000');
});
});
参考
- Mocking the system clock with Jest – DEV Community
https://dev.to/doctolib/mocking-the-system-clock-with-jest-4d38 - Timer Mocks · Jest
https://jestjs.io/docs/timer-mocks - The Jest Object · Jest
https://jestjs.io/docs/jest-object#fake-timers