Bun

指南測試執行器

在 Bun 的測試執行器中設定系統時間

Bun 的測試執行器支援使用 setSystemTime 函數以程式方式設定系統時間。

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);
});

setSystemTime 函數通常與 生命週期掛鉤 一起使用,以使用確定性的「假時鐘」來設定測試環境。

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...

若要將系統時鐘重設為實際時間,請呼叫沒有參數的 setSystemTime

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

setSystemTime(); // reset to actual time

請參閱 文件 > 測試執行器 > 日期和時間,以取得 Bun 測試執行器中模擬的完整文件。