LoginSignup
3
1

More than 3 years have passed since last update.

[MockDate]テストの時に日付を固定化する方法[JavaScript]

Posted at

背景

Jestでテストを書いている時に日付の固定化をしたかったのですが、
今まで以下のような感じで、Date.newをmock化していましたが、書くのがめんどくさいなって思ってました。
https://qiita.com/bearII/items/d8a3bc0e83b14b36e64e

結論

以下のパッケージが良さげでした。
https://www.npmjs.com/package/mockdate

以下のように1行でモック化できてテストファイルがスッキリします。
before内でモック化し、after内でモックを解除するだけです。
momentもモックできているのが確認できます。

import MockDate from 'mockdate'
import moment from 'moment'

describe('mock date', () => {
  beforeEach(() => {
    MockDate.set('2000-11-22')
  })
  afterEach(() => {
    MockDate.reset()
  })
  it('new Dateがmock化されていることを確認', () => {
    expect(new Date().getFullYear()).toBe(2000)
    expect(new Date().getMonth()).toBe(10)
    expect(new Date().getDate()).toBe(22)
  })
  it('momentがmock化されていることを確認', () => {
    expect(moment().format('YYYY-MM-DD')).toBe('2000-11-22')
  })
})
3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1