Skip to content

Тестовый раннер Bun поддерживает установку системного времени программно с функцией setSystemTime.

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

test("вечеринка как в 1999", () => {
  const date = new Date("1999-01-01T00:00:00.000Z");
  setSystemTime(date); // теперь 1 января 1999

  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); // теперь 1 января 1999
});

// тесты...

Для сброса системных часов к фактическому времени вызовите setSystemTime без аргументов.

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

setSystemTime(); // сбросить к фактическому времени

Смотрите Документация > Тестирование > Дата и время для полной документации о моках с тестовым раннером Bun.

Bun от www.bunjs.com.cn