Different approaches to mocking the Date in Jest tests
See the full post and explanation at codewithhugo.com/mocking-the-current-date-in-jest-tests.
There are 2 general approaches to mocking the current date:
- Using
new Date()
and mocking the constructor. - Using
new Date(Date.now())
and mocking the output ofDate.now()
.
For each of those approaches in the application code, this repo has examples for a spy-based approach and a full function/constructor stub/mock replacement:
Date.now()
+ full mock/stub: see ./src/stub-date-now.test.jsDate.now()
+ spy: see ./src/spy-date-now.test.jsnew Date()
+ full mock/stub: see ./src/stub-date-class.test.jsnew Date()
+ spy: see ./src/spy-new-date.test.js
Packages were installed with yarn, although npm should work just as well.
- Run
yarn
- Run
yarn test