hookdate
Hook javascript Date object to save date and time for each call, and playback(mock) the saved data to get same result again. Useful for testing.
Install
npm install hookdate
Usage
- Record and playback
new Date
calls:
var lib =libstart //start hook Date object with record modevar d =DateDate2016 10 1 // this will not recordconsole// [1478515156899, 1478515156000, 1478515156899]libplayBack = true+// 1478515156899// 1478515156000Date// 1478515156899lib //stop hook, restore to old Date object
- Playback
new Date
with time array:
var lib =// OPTIONAL: set timezoneOffset// CAUTION: this should be set BEFORE lib.hooklibtimezoneOffset = 60// set time array, and playBack=truelibstart1298937600000 1478514684440 true/* playback first date */var d =d// 60d// "2011-03-01T00:00:00.000Z"/* pause for a while */libpause = true/* continue */libpause = false/* playback second date */// "2016-11-07T10:31:24.440Z"/* drained, same as normal call */// return system time// restore old Date objectlib
API
lib.start :fn( dateStore? :number[], isPlayBack? :boolean, cb? :fn(isPlayback :boolean, value :number) ) => void
Hook global Date object
Optional pass dateStore as time array (milliseconds elapsed since the UNIX epoch), will used for record/playback, default: []
Optional pass whether to playback (true) or record (false), default: false
Optional pass callback to monitor the isPlayBack and value for record/playback.
lib.stop :fn() => void
Restore old global Date object.
lib.dateStore :number[]
Time array (milliseconds elapsed since the UNIX epoch) used for any call to new Date()
, Date()
, Date.now
.
If isPlayBack is true, will shift first value into the Date result, else push new time value into it.
lib.playBack :boolean
Whether the mode is record(false), or a playback(true).
lib.oldDate :Date
The reference of old global Date object.
lib.pause :boolean
When set to true, will pause record/playback, set to false to continue.