51 lines
1.1 KiB
Plaintext
51 lines
1.1 KiB
Plaintext
---
|
|
title: Set the system time in Bun's test runner
|
|
sidebarTitle: Mock system time
|
|
mode: center
|
|
---
|
|
|
|
Set the system time in tests with the `setSystemTime` function from `bun:test`.
|
|
|
|
```ts
|
|
import { test, expect, setSystemTime } from "bun:test";
|
|
|
|
test("party like it's 1999", () => {
|
|
const date = new Date("1999-01-01T00:00:00.000Z");
|
|
setSystemTime(date); // it's now January 1, 1999
|
|
|
|
const now = new Date();
|
|
expect(now.getFullYear()).toBe(1999);
|
|
expect(now.getMonth()).toBe(0);
|
|
expect(now.getDate()).toBe(1);
|
|
});
|
|
```
|
|
|
|
---
|
|
|
|
Call `setSystemTime` in a [lifecycle hook](/test/lifecycle) like `beforeAll` to give your tests a deterministic "fake clock".
|
|
|
|
```ts
|
|
import { test, expect, beforeAll, setSystemTime } from "bun:test";
|
|
|
|
beforeAll(() => {
|
|
const date = new Date("1999-01-01T00:00:00.000Z");
|
|
setSystemTime(date); // it's now January 1, 1999
|
|
});
|
|
|
|
// tests...
|
|
```
|
|
|
|
---
|
|
|
|
To reset the system clock to the actual time, call `setSystemTime` with no arguments.
|
|
|
|
```ts
|
|
import { test, expect, beforeAll, setSystemTime } from "bun:test";
|
|
|
|
setSystemTime(); // reset to actual time
|
|
```
|
|
|
|
---
|
|
|
|
See [Dates and times](/test/dates-times).
|