Выбор ответа Middle Тестирование обновлено
Действие внутри waitFor
Вопрос
Что не так с этим тестом?
await waitFor(async () => {
await user.click(screen.getByRole('button', { name: 'Загрузить ещё' }));
expect(screen.getAllByRole('listitem')).toHaveLength(20);
});
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Колбэк waitFor повторяется, и клик выполнится несколько раз. waitFor повторяет колбэк, пока тот не перестанет бросать ошибку.
Варианты ответа
waitForнельзя использовать сuser-event, только сfireEvent- Колбэк
waitForповторяется, и клик выполнится несколько разправильный ответ waitForждёт ровно 1 секунду, а запрос может идти дольше- Нужно вернуть промис из колбэка через
return, иначе он не ждёт
Разбор
waitFor повторяет колбэк, пока тот не перестанет бросать ошибку. Побочное действие внутри повторится. Правильно: await user.click(...) до waitFor, а внутри только expect.
- Совместимость с
user-eventтут ни при чём. waitForждёт до успеха или до таймаута, а не фиксированное время.- Асинхронный колбэк
waitForподдерживает, но это не решает проблему повторов.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.