RxJava 在 UniTest Android 中不是 运行(不是 androidTest)
RxJava not running in UniTest Android (Not androidTest)
我是 rxjava 新手,在 Unitest 玩过 RxJava,但 Observable 不是 运行。
@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() return 错误。我怎样才能获得 onNext 值,或者因为我的 Observable 错误?
谢谢
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)
}
如果您想了解更多,请结帐this link
我是 rxjava 新手,在 Unitest 玩过 RxJava,但 Observable 不是 运行。
@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() return 错误。我怎样才能获得 onNext 值,或者因为我的 Observable 错误?
谢谢
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)
}
如果您想了解更多,请结帐this link