🤡

Jest で Date を Mock する

2023/07/08に公開

結論

mockdate を使いましょう

コード

組み込みの Date オブジェクトも dayjs のようなライブラリも mock に置き換わります 👌

mockdate.test.js
const MockDate = require('mockdate');
const dayjs = require('dayjs');

describe('mockdate', () => {
  beforeEach(() => {
    MockDate.set(new Date('2000-01-01T00:00:00.000Z'));
  });

  afterEach(() => {
    MockDate.reset();
  });

  it('should be mock data in the built-in Date Object', () => {
    const date = new Date();

    expect(date.toISOString()).toBe('2000-01-01T00:00:00.000Z');
  });

  it('should be mock data in dayjs', () => {
    const date = dayjs();

    expect(date.toISOString()).toBe('2000-01-01T00:00:00.000Z');
  });
});

余談

mockdateDay.js のテストでも利用しているとのこと。

https://github.com/iamkun/dayjs/issues/500

Discussion