O runner de testes do Bun suporta definir o horário do sistema programaticamente com a função setSystemTime.
ts
import { test, expect, setSystemTime } from "bun:test";
test("festejar como se fosse 1999", () => {
const date = new Date("1999-01-01T00:00:00.000Z");
setSystemTime(date); // agora é 1 de janeiro de 1999
const now = new Date();
expect(now.getFullYear()).toBe(1999);
expect(now.getMonth()).toBe(0);
expect(now.getDate()).toBe(1);
});A função setSystemTime é comumente usada em conjunto com Hooks de Ciclo de Vida para configurar um ambiente de teste com um "relógio falso" determinístico.
ts
import { test, expect, beforeAll, setSystemTime } from "bun:test";
beforeAll(() => {
const date = new Date("1999-01-01T00:00:00.000Z");
setSystemTime(date); // agora é 1 de janeiro de 1999
});
// testes...Para redefinir o relógio do sistema para o horário real, chame setSystemTime sem argumentos.
ts
import { test, expect, beforeAll, setSystemTime } from "bun:test";
setSystemTime(); // redefinir para o horário realConsulte Docs > Test Runner > Date and time para documentação completa sobre mock com o runner de testes do Bun.