我重新介绍了rxjava,并在Unitest中播放RxJava,但是可观察到的不运行。
@Test
fun notepad(){
val scheduler = TestScheduler()
val subscriber = TestObserver<String>()
RxJavaPlugins.setComputationSchedulerHandler{ scheduler }
Single.just("Data Local")
.toObservable()
.subscribeOn(Schedulers.computation())
.observeOn(Schedulers.computation())
.map { "Map Local" }
.observeOn(Schedulers.computation())
.flatMap { Observable.just(1) }
.map { "Map Remote" }
.startWith { "StartWith" }
.onErrorReturn { "Error Return" }
.subscribe(subscriber)
scheduler.advanceTimeBy(2, TimeUnit.SECONDS)
print("${subscriber.hasSubscription()}")
}但是subscriber.hasSubscription()返回false。我如何才能得到onNext值,或者是因为我明显的错误?
谢谢
发布于 2019-09-03 07:39:03
RxJava v2有着非常有用的方法test。它提供了以简单的方式测试可观察性的功能。以这种方式重写测试,并使用许多提供RxJava的断言方法:
您已编辑的代码
@Test
fun notepad(){
val scheduler = TestScheduler()
val subscriber = TestObserver<String>()
RxJavaPlugins.setComputationSchedulerHandler{ scheduler }
Single.just("Data Local")
.toObservable()
.subscribeOn(Schedulers.computation())
.observeOn(Schedulers.computation())
.map { "Map Local" }
.observeOn(Schedulers.computation())
.flatMap { Observable.just(1) }
.map { "Map Remote" }
.startWith { "StartWith" }
.onErrorReturn { "Error Return" }
.test()
.await()
.assertValueAt(0) { startString->
yourString == "StartWith"
}
.assertValueAt(1) { mapString->
mapString == "Map Remote"
}
scheduler.advanceTimeBy(2, TimeUnit.SECONDS)
}如果你想了解它更多的结帐此链接
https://stackoverflow.com/questions/57766856
复制相似问题