Time Bandit
Time Bandit makes it simpler to test your time-dependent code.
Installation
npm install time-bandit
or yarn add time-bandit
Example
const { travel, freeze, unfreeze, hours, minutes } = require('time-bandit') // Travel 20 hours and 30 minutes into the futuretravel(hours(20) + minutes(30)) // Restore dateunfreeze()
API
travel(duration: number): void
Travel the given duration
of milliseconds and freeze the time.
const timestamp = Date.now() travel(1000)Date.now() - timestamp // 1000 travel(-2000)Date.now() - timestamp // -1000
freeze(...args): void
Freeze date and time at the current timestamp.
freeze(1985, 9, 26, 9, 0, 0)new Date() // Sat Oct 26 1985 09:00:00 freeze(1445405280000)new Date() // Wed Oct 21 2015 07:28:00Date.now() === 1445405280000 // true
unfreeze(): void
Restore the native Date
object.
const NativeDate = Date; freeze()Date === NativeDate // false unfreeze()Date === NativeDate // true
isFrozen(): boolean
Returns whether the Date
object is mocked.
freeze()isFrozen() // true unfreeze()isFrozen() // false
seconds(amount: number): number
Returns the given amount
of seconds in milliseconds.
seconds(1) // 1000seconds(-5) // -5000 travel(seconds(-5)) // Travel 5 seconds back in timetravel(seconds(50)) // Travel 50 seconds into the future
minutes(amount: number): number
Returns the given amount
of minutes in milliseconds.
minutes(1) // 60,000seconds(-5) // -300,000 travel(minutes(-5)) // Travel 5 minutes back in timetravel(minutes(50)) // Travel 50 minutes into the future
hours(amount: number): number
Returns the given amount
of hours in milliseconds.
hours(1) // 3,600,000hours(-2) // -7,200,000 travel(hours(-1)) // Travel 1 hour back in timetravel(hours(23)) // Travel 23 hours into the future
days(amount: number): number
Returns the given amount
of days in milliseconds.
days(1) // 86,400,000days(-1) // -86,400,000 travel(days(-1)) // Travel 1 day back in timetravel(days(10)) // Travel 10 days into the future