jest-date-mock
Mock window.Date
when run unit test cases with jest. Make tests of Date
easier.
Install
This should only be installed as a development dependency (devDependencies
) as it is only designed for testing.
npm i --save-dev jest-date-mock
Setup
In your package.json
under the jest
, create a setupFiles
array and add jest-date-mock
to the array.
{
"jest": {
"setupFiles": ["jest-date-mock"]
}
}
If you already have a setupFiles
attribute you can also append jest-date-mock
to the array.
{
"jest": {
"setupFiles": ["./__setups__/other.js", "jest-date-mock"]
}
}
More about in configuration section.
Setup file
Alternatively you can create a new setup file which then requires this module or
add the require
statement to an existing setup file.
__setups__/date.js
import 'jest-date-mock';
require('jest-date-mock');
Add that file to your setupFiles
array:
"jest": {
"setupFiles": [
"./__setups__/date.js"
]
}
Usage
Use the only 3 api
for test cases.
advanceBy(ms)
: advance date timestamp by ms
.advanceTo([timestamp])
: reset date to timestamp
, default to 0
.clear()
: shut down the mock system.
import { advanceBy, advanceTo, clear } from 'jest-date-mock';
test('usage', () => {
advanceTo(new Date(2018, 5, 27, 0, 0, 0));
const now = Date.now();
advanceBy(3000);
expect(+new Date() - now).toBe(3000);
advanceBy(-1000);
expect(+new Date() - now).toBe(2000);
clear();
Date.now();
});
More sample code here.
Also, add an API Date.current()
to get the actual current timestamp.
import { advanceBy, advanceTo, clear } from 'jest-date-mock';
advanceTo(0);
Date.now();
Date.current();
License
MIT@hustcc.