我有以下RxJava2科特林代碼:RxJava Completabe andThen測試
val tester = Completable.complete()
.andThen(SingleSource<Int> { Single.just(42) })
.test()
tester.assertComplete()
tester.assertValue(42)
這模擬有Completable觀察到的(想象一個簡單的更新操作的API),然後一個單一可觀察(圖像上的一個GET操作API)。我想連接兩個observable,當Completable完成時,Single運行,最後我在觀察者(Int 42)上得到onSuccess事件。
但是這個測試代碼不起作用。斷言失敗,出現以下錯誤:
java.lang.AssertionError: Not completed
(latch = 1, values = 0, errors = 0, completions = 0))
我不能夠理解我在做什麼錯了,我想到的是,Completable發出的onComplete上訂閱,然後單訂,我的觀察者(tester
)獲取一個值爲42的onSuccess事件,但似乎訂閱保持「暫停」不發射任何東西。
的想法是一個類似於在這個博客帖子發現:https://android.jlelse.eu/making-your-rxjava-intentions-clearer-with-single-and-completable-f064d98d53a8
apiClient.updateMyData(myUpdatedData) // a Completable
.andThen(performOtherOperation()) // a Single<OtherResult>
.subscribe(otherResult -> {
// handle otherResult
}, throwable -> {
// handle error
});
感謝akarnokd,由於某種原因,我補充說,該代碼,因爲最初我是做'.andThen {Single.just(42) }'這不是編譯。 – Miquel