Вступить в клуб →
сложнаявопросСлой данных, DI и релиз

Тест ViewModel с корутинами то проходит, то нет

Юнит-тест проверяет, что после вызова load во ViewModel состояние станет Content. Тест падает: то с ошибкой про отсутствие главного диспетчера, то с тем, что состояние всё ещё Loading. Коллега предлагает добавить перед проверкой ожидание в полсекунды и закрыть вопрос.

Как правильно поступить?

  • Подменить главный диспетчер тестовым, управлять виртуальным временем из теста, а репозиторий подставить фейком
  • Перевести ViewModel на колбэки: код с корутинами в обычном JVM-тесте без эмулятора проверить нельзя
  • Добавить паузу перед проверкой: этого достаточно, чтобы корутина успела отработать до сравнения состояния
  • Выполнять проверку в отдельном потоке, чтобы ожидание результата не блокировало основной поток теста

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела