Bun のテストランナーは setSystemTime 関数を使用してシステム時刻をプログラムで設定することをサポートしています。
ts
import { test, expect, setSystemTime } from "bun:test";
test("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);
});setSystemTime 関数は、決定論的な「フェイククロック」を備えたテスト環境を構成するために ライフサイクルフック と組み合わせて一般的に使用されます。
ts
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 を呼び出します。
ts
import { test, expect, beforeAll, setSystemTime } from "bun:test";
setSystemTime(); // 実際の時刻にリセットBun テストランナーでのモックの完全なドキュメントについては、ドキュメント > テストランナー > 日付と時刻 を参照してください。