Выбор ответа Junior Jest и Vitest обновлено
Тест с задержкой
Вопрос
Как протестировать debounce на 300 мс без реального ожидания?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: vi.useFakeTimers() и vi.advanceTimersByTime(300). Фейковые таймеры подменяют setTimeout и позволяют «перемотать» время мгновенно и детерминированно.
Варианты ответа
vi.useFakeTimers()иvi.advanceTimersByTime(300)правильный ответawait new Promise(r => setTimeout(r, 300))в тесте- Поставить таймаут теста больше 300 мс в конфиге раннера
- Пропускать такие тесты через
it.skipна CI
Разбор
Фейковые таймеры подменяют setTimeout и позволяют «перемотать» время мгновенно и детерминированно. Реальное ожидание замедляет набор и флакает на нагруженной машине, таймаут теста проблему не решает.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.