Выбор ответа Junior Тестирование спрашивают часто обновлено
Flutter: pump после tap
Вопрос
Тест нажимает кнопку, которая вызывает setState, и сразу проверяет текст. Проверка падает. Что пропущено?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: await tester.pump() после tap, чтобы отрисовать кадр после setState. Время в widget-тесте управляется вручную: setState помечает элемент, но кадр отрисуется только при pump().
Варианты ответа
await tester.pump()послеtap, чтобы отрисовать кадр послеsetStateправильный ответawait Future.delayed(const Duration(seconds: 1)), чтобыsetStateуспел отработать- Повторный
pumpWidgetс тем же виджетом, чтобы дерево построилось заново await tester.idle()передtap, чтобы все кадры были готовы заранее
Разбор
Время в widget-тесте управляется вручную: setState помечает элемент, но кадр отрисуется только при pump(). Реальная задержка не помогает, потому что фреймворк не рисует кадры сам. Повторный pumpWidget пересоздаст дерево с потерей состояния. idle не строит кадр.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.