Я не уверен, что что-то пропустил в MvRx, MvRxTestRule или в Rx Java.
Обычно в ViewModel я хочу проверить сетевой вызов и запускает ли он другой вызов. Поэтому, когда у меня есть что-то вроде этого:
fun fetchResult() {
someRepository.fetchResult()
.compose(schedulerProvider.getSchedulersForSingle())
.execute {
copy(
...
)
}
}
Это работает в модульных тестах:
viewModel?.fetchResult()
viewModel?.someEvent()
withState(viewModel!!) {
assert(it.someOtherRequest == Uninitialized)
}
Однако, если вызов повторяется:
fun fetchResult() {
withState { state ->
disposable = Observable.interval(0L, 6L, TimeUnit.SECONDS)
.flatMapSingle {
revolutRepository.fetchResult()
.compose(schedulerProvider.getSchedulersForSingle())
}
.compose(schedulerProvider.getSchedulersForObservable())
.execute {
copy(
...
)
}
}
}
Я не могу пройти мимо viewModel? .fetchResult () в тесте. Как я могу заставить это работать?
MvRxTestRule () находится в сопутствующем объекте тестов.