Тестування · Senior · Запитання 33 з 75
Чому з vi.useFakeTimers() може зависнути тест, що чекає на проміс із setTimeout всередині?
vi.useFakeTimers();
await sleep(1000); // всередині: new Promise(r => setTimeout(r, 1000))- ✓Правильна відповідь: Таймер не спрацює, доки час не просунути, а тест заблокований на
awaitі не може його просунути - 2Фейкові таймери ламають проміси
- 3
awaitне можна використовувати з фейковими таймерами
Пояснення
Запустіть проміс, потім await vi.advanceTimersByTimeAsync(1000), потім дочекайтеся промісу - async-варіанти ще й проганяють мікрозадачі.