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 測試執行器進行模擬的完整文件,請參閱文件 > 測試執行器 > 日期和時間。