Выбор ответа Middle Тестирование обновлено
Тестирование Flow через Turbine
Вопрос
Что делает flow.test { awaitItem() } из библиотеки Turbine?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Собирает поток и даёт по очереди ждать значения, завершение и ошибки. Turbine подписывается на поток внутри test { }, и тест по очереди забирает события: awaitItem(), awaitComplete(), awaitError().
Варианты ответа
- Запускает поток в фоне и игнорирует значения, проверяя только отсутствие ошибок
- Превращает Flow в LiveData и подписывает на него тестовый
Observer - Ускоряет поток в 10 раз, пропуская задержки между эмиссиями
- Собирает поток и даёт по очереди ждать значения, завершение и ошибкиправильный ответ
Разбор
Turbine подписывается на поток внутри test { }, и тест по очереди забирает события: awaitItem(), awaitComplete(), awaitError(). Если пришло неожиданное значение или ожидание не дождалось, тест падает с понятной ошибкой. В конце требуется обработать или явно проигнорировать оставшиеся события. Это проще ручного launch с toList.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.