Выбор ответа Middle Тестирование обновлено

Тестирование Flow через Turbine

Вопрос

Что делает flow.test { awaitItem() } из библиотеки Turbine?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Собирает поток и даёт по очереди ждать значения, завершение и ошибки. Turbine подписывается на поток внутри test { }, и тест по очереди забирает события: awaitItem(), awaitComplete(), awaitError().

Варианты ответа

  1. Запускает поток в фоне и игнорирует значения, проверяя только отсутствие ошибок
  2. Превращает Flow в LiveData и подписывает на него тестовый Observer
  3. Ускоряет поток в 10 раз, пропуская задержки между эмиссиями
  4. Собирает поток и даёт по очереди ждать значения, завершение и ошибкиправильный ответ

Разбор

Turbine подписывается на поток внутри test { }, и тест по очереди забирает события: awaitItem(), awaitComplete(), awaitError(). Если пришло неожиданное значение или ожидание не дождалось, тест падает с понятной ошибкой. В конце требуется обработать или явно проигнорировать оставшиеся события. Это проще ручного launch с toList.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.