-
Notifications
You must be signed in to change notification settings - Fork 67
[Replacement]: mockdate #487
Copy link
Copy link
Open
Description
Package to replace
vitest / node:test / bun:test
Suggested replacement(s)
Depending on the package that the user uses for testing
- vitest ( setSystemTime )
- bun:test ( setSystemTime )
- node:test ( mock.timers )
Manifest type
preferred (lighter or more modern alternative package)
Rationale
mockdate https://npmx.dev/package/mockdate is used to mock dates and so it's useful in tests but for those cases all modern test-runners support mock of dates in a convenient way
https://nodejs.org/en/learn/test-runner/mocking#time
https://vitest.dev/guide/mocking.html#mock-the-current-date
https://bun.com/docs/guides/test/mock-clock
Availability
// node:test with mock.timers since 20.4.0
https://nodejs.org/en/blog/release/v20.4.0
import { test } from 'node:test'
import assert from 'node:assert'
test('freeze date', (t) => {
t.mock.timers.enable({ apis: ['Date'], now: new Date('2026-01-01') })
assert.strictEqual(
new Date().toISOString(),
'2026-01-01T00:00:00.000Z'
)
})vitest
import { vi, test, expect } from 'vitest'
test('freeze date', () => {
vi.useFakeTimers()
vi.setSystemTime(new Date('2026-01-01'))
expect(new Date().toISOString())
.toBe('2026-01-01T00:00:00.000Z')
})bun:test
import { test, expect, mock } from "bun:test";
test("freeze time", () => {
mock.timers.enable({ now: new Date("2026-01-01") });
expect(new Date().toISOString())
.toBe("2026-01-01T00:00:00.000Z");
});Code example (optional)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels