背景
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')
})
})