【发布时间】:2020-04-30 15:02:34
【问题描述】:
我不确定我是否遗漏了 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() 在测试的伴随对象中。
【问题讨论】:
标签: android unit-testing rx-java mvrx