diff --git a/__tests__/index.js b/__tests__/index.js index 55b930d..54d9eed 100644 --- a/__tests__/index.js +++ b/__tests__/index.js @@ -6,14 +6,12 @@ import { advanceBy, advanceTo, clear, version } from '../src'; import pkg from '../package.json'; -beforeEach(() => { - advanceTo(); // advanceTo to 0 ms. -}); afterEach(() => { clear(); }); describe('jest-date-mock', () => { test('Date Class', () => { + advanceTo(); // Date isEqual expect(new Date()).toEqual(new Date(0)); @@ -68,14 +66,15 @@ describe('jest-date-mock', () => { }); test('advanceBy', () => { - advanceTo(1000); advanceBy(3000); // advanceBy time 3 seconds - expect(+new Date()).toBe(4000); + const now = new Date(); + advanceBy(4000); + expect(+new Date() - now).toBe(4000); advanceBy(-4000); // advanceBy time -4 seconds - expect(+new Date()).toBe(0); + expect(+new Date() - now).toBe(0); advanceBy(); - expect(+new Date()).toBe(0); + expect(+new Date() - now).toBe(0); }); test('clear', () => { diff --git a/package.json b/package.json index 7881b59..2f29473 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,11 @@ { "name": "jest-date-mock", - "version": "1.0.6", + "version": "1.0.7", "description": "Mock `window.Date` when run unit test cases with jest. Make tests of `Date` easier.", "main": "lib/index.js", "typings": "lib/index.d.ts", "scripts": { - "test": "jest", + "test": "jest --no-cache", "build": "babel src --out-dir lib --copy-files && npm run test", "coveralls": "cat ./coverage/lcov.info | coveralls" }, diff --git a/src/date.js b/src/date.js index 9b03907..616210d 100644 --- a/src/date.js +++ b/src/date.js @@ -3,6 +3,7 @@ * Contract: i@hust.cc */ +// undefined means unmock. const DEFAULT = undefined; // current Date of timestamp @@ -12,7 +13,7 @@ let nowDate = DEFAULT; * move date by offset `ms` * @param ms */ -export const advanceBy = ms => nowDate += (ms || 0); +export const advanceBy = ms => nowDate = (nowDate === undefined ? +new Date() : nowDate) + (ms || 0); /** * reset Date diff --git a/src/index.d.ts b/src/index.d.ts index 2932529..cfd128f 100644 --- a/src/index.d.ts +++ b/src/index.d.ts @@ -4,7 +4,7 @@ * @param ms * @default 0 */ -export declare function advanceBy(ms: number): void; +export declare function advanceBy(ms?: number): void; /** * Sets date to a timestamp or Date. @@ -12,7 +12,7 @@ export declare function advanceBy(ms: number): void; * @param ms * @default 0 */ -export declare function advanceTo(ms?: number | Date): void; +export declare function advanceTo(ms?: number | Date | string): void; /** * Un-mocks the Date class. diff --git a/src/mockDate.js b/src/mockDate.js index b957317..30ee397 100644 --- a/src/mockDate.js +++ b/src/mockDate.js @@ -6,6 +6,7 @@ import { now } from './date'; export const mockDateClass = D => { + // if undefined, use real date, or else mock date const mockNow = () => now() === undefined ? D.now() : now(); function MD(...args) {