我不确定是否错过了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()在测试的伴随对象中。
我将带有间隔的呼叫移至仓库,并对其进行了嘲笑。那解决了问题。