我正在写一个简单的测试,等效于:
Test fun testObservable() {
val returnedObservable = Observable.create(object : Observable.OnSubscribe<String> {
override fun call(t: Subscriber<in String>) {
t.onNext("hello")
t.onCompleted()
}
}).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
val result = returnedObservable.toBlocking().first()
assertEquals("hello", result)
}
当存在
returnedObservable.toBlocking().first()
时,测试将无限期阻止.observeOn(AndroidSchedulers.mainThread())
的执行。有没有办法转换可观察对象以返回结果?
returnedObservable
是从已应用.subscribeOn和.observeOn的方法调用返回的,因此不能删除它们。 最佳答案
我猜这是这里提到的错误:https://github.com/ReactiveX/RxAndroid/issues/50
顺便说一句,为什么不使用RxKotlin呢?
您的示例看起来会更好:
val returnedObservable = observable<String> { subscriber ->
subscriber.onNext("hello")
subscriber.onCompleted()
}
.subscribeOn(Schedules.io())
.observeOn(AndroidSchedulers.mainThread())