Как мокать таймеры в тестах?

Middle
199 просмотров
AFK Offer AI

jest.useFakeTimers() заменяет setTimeout, setInterval, Date на моки. jest.advanceTimersByTime(1000) продвигает время на 1с. jest.runAllTimers() выполняет все ожидающие таймеры. В Vitest: vi.useFakeTimers(), vi.advanceTimersByTime(). Важно обернуть в act() при тестировании React. Не забудь jest.useRealTimers() в afterEach. Для Date: jest.setSystemTime(new Date("2024-01-01")). Полезно для debounce, throttle, анимаций, countdown. Fake timers + act — частый источник ошибок, будь аккуратен.

Следующий вопрос

Как реализовать Carousel/Slider?