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