运行时包管理器打包器测试运行器代码检查格式化指南参考博客反馈

在 Bun 的测试运行器中设置系统时间

使用 bun:test 中的 setSystemTime 函数在测试中设置系统时间。

TypeScript
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); // 现在时间是 1999 年 1 月 1 日

  const now = new Date();
  expect(now.getFullYear()).toBe(1999);
  expect(now.getMonth()).toBe(0);
  expect(now.getDate()).toBe(1);
});

在 beforeAll 等生命周期钩子中调用 setSystemTime,为测试提供一个确定性的“模拟时钟”。

TypeScript
import { test, expect, beforeAll, setSystemTime } from "bun:test";

beforeAll(() => {
  const date = new Date("1999-01-01T00:00:00.000Z");
  setSystemTime(date); // 现在时间是 1999 年 1 月 1 日
});

// 测试代码...

要将系统时钟重置为实际时间,只需调用无参数的 setSystemTime。

TypeScript
import { test, expect, beforeAll, setSystemTime } from "bun:test";

setSystemTime(); // 重置为实际时间

请参阅日期和时间。