我不确定我是否错过了 MvRx、MvRxTestRule 或 RxJava 中的某些内容。
在 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() 在测试的伴随对象中。