Я столкнулся с проблемой при написании тестовых случаев для вызова модификации.
Я хочу сделать модификацию наблюдаемой синхронной, чтобы тест прошел. В настоящее время выполнение тестового примера завершается до того, как приходит обратный вызов модификации, и, следовательно, тестовый пример завершается ошибкой.
Вот вызов модернизации:
**TestClient.getWeatherData(cityName)
.observeOn(mainThreadSched)
.subscribeOn(ioSched)
.subscribe(this::onLoadSuccess, this::onLoadError);**
Я использую Dagger для внедрения планировщиков различных сетей для фактического и тестового кода следующим образом:
mainThreadSched set to **AndroidSchedulers.mainThread()** and
ioSche set to **Schedulers.io()**
Для тестового кода:
mainThreadSched set to **Schedulers.immediate()** and
ioSched set to **Schedulers.immediate()**
Тем не менее иногда тестовый пример дает сбой, хотя планировщик настраивается на Schedulers.immediate()
. Я делаю что-то не так здесь? или есть ли альтернативный способ сделать это тестирование?
Schedulers.trampoline()
?immediate
склонен к загадочным зависаниям, потому что это неправильный планировщик (спит и не поддерживает рекурсивное/реентерабельное использование). - person akarnokd   schedule 28.06.2016toBlocking
или использоватьTestSubscriber.awaitTerminalEvent()
. - person marwinXXII   schedule 29.06.2016subscribeOn(ioSched)
из своего кода. Так что все будет вызываться из самого основного потока - person Milind Mevada   schedule 05.07.2017