Awesome Open Source
Awesome Open Source


Mock Date when run unit test cases with jest. Make tests of Date easier.

Build Status Coverage Status npm npm


This should only be installed as a development dependency (devDependencies) as it is only designed for testing.

npm i --save-dev jest-date-mock


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.


import 'jest-date-mock';
// or

Add that file to your setupFiles array:

"jest": {
  "setupFiles": [


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)); // reset to date time.

  const now =;

  advanceBy(3000); // advance time 3 seconds
  expect(+new Date() - now).toBe(3000);

  advanceBy(-1000); // advance time -1 second
  expect(+new Date() - now).toBe(2000);

  clear();; // will got current timestamp

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); // reset to timestamp = 0; // will got 0

Date.current(); // will got the actual timestamp.


[email protected]hustcc.

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
javascript (70,301
jest (285
date (119
datetime (96
timestamp (21