jest-plugin-clock
v2.9.0
Published
Jest plugin to mock dates, times, and datetimes.
Downloads
30,277
Maintainers
Readme
jest-plugin-clock
Jest plugin to mock dates, times, and datetimes.
Getting Started
Install jest-plugin-clock
using yarn
:
yarn add --dev jest-plugin-clock
Motivation
When testing dates, you often want to have deterministic outcomes even when using new Date()
and Date.now()
. This allows you to set the clock time such that your test can compute the deterministic outcome each time.
Usage
If you want, you can import clock
from jest-plugin-clock
at the top of every test:
import clock from 'jest-plugin-clock';
If you want to install clock
as a global, you can modify the jest
section of your package.json
to include:
"jest": {
"setupFiles": [
"jest-plugin-clock/setup"
]
}
Example
Here's an example test that tests clock
itself:
describe('clock', () => {
context('with string date', () => {
clock.set('2017-08-16T15:20:40.450');
it('returns the correct year', () => {
expect(new Date().getFullYear()).toEqual(2017);
});
it('returns the correct month', () => {
// getMonth is 0-indexed.
expect(new Date().getMonth()).toEqual(7);
});
it('returns the correct day (date)', () => {
expect(new Date().getDate()).toEqual(16);
});
it('returns the correct hour', () => {
expect(new Date().getHours()).toEqual(15);
});
it('returns the correct minute', () => {
expect(new Date().getMinutes()).toEqual(20);
});
it('returns the correct seconds', () => {
expect(new Date().getSeconds()).toEqual(40);
});
it('returns the correct milliseconds', () => {
expect(new Date().getMilliseconds()).toEqual(450);
});
});
context('with date object', () => {
clock.set(new Date('2017-08-16T15:20:40.450'));
it('returns the correct year', () => {
expect(new Date().getFullYear()).toEqual(2017);
});
it('returns the correct month', () => {
// getMonth is 0-indexed.
expect(new Date().getMonth()).toEqual(7);
});
it('returns the correct day (date)', () => {
expect(new Date().getDate()).toEqual(16);
});
it('returns the correct hour', () => {
expect(new Date().getHours()).toEqual(15);
});
it('returns the correct minute', () => {
expect(new Date().getMinutes()).toEqual(20);
});
it('returns the correct seconds', () => {
expect(new Date().getSeconds()).toEqual(40);
});
it('returns the correct milliseconds', () => {
expect(new Date().getMilliseconds()).toEqual(450);
});
});
});