UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【Jest】Date.now()をモック化する

Date.now()を使っている箇所でJestのスナップショットテストを実施した場合、日付が毎回変わってしまうためエラーになってしまう

そのため、Date.now()をモック化してあげる必要がある

そこでJestのMock Functionsを利用する

jestjs.io

具体的には以下のようにしてDate.now()が必ず同じ値を返すようにモック化する

Date.now = jest.fn(() => 1482363367071);

全てのテストの前にモックかしたい場合はbeforeAllで実行する

  beforeAll(() => {
    global.Date.now = jest.fn(() => 1595980800000);
  });

Date自体をモック化しようとしたがそれはうまくいかなかった Mocking current time for Date · Issue #2234 · facebook/jest · GitHub