I持って、次のRxJava2 Kotlinコード:RxJava Completabe andThenテスト
val tester = Completable.complete()
.andThen(SingleSource<Int> { Single.just(42) })
.test()
tester.assertComplete()
tester.assertValue(42)
これは、上のget操作シングル観測可能(画像その後、Completable(APIへの簡単な更新操作を想像)観測可能としたシミュレートAPI)。 Completableが終了するとSingleが実行され、最後にオブザーバ(int 42)でonSuccessイベントが発生するように、2つの観測値を連結したいと考えています。
ただし、このテストコードは機能しません。アサーション次のエラーで失敗します。私は私が間違っているのかを理解することはできませんよ
java.lang.AssertionError: Not completed
(latch = 1, values = 0, errors = 0, completions = 0))
、私は、Completableは、サブスクリプションにonCompleteの発することを期待して、単一のサブスクライブ、そして私の観測者(tester
)が取得しますonSuccessイベントの値は42ですが、サブスクリプションは何も表示されずに「一時停止」しているようです。
アイデアは、このブログの記事で見られるものと類似している:
.andThen(SingleSource<Int> { Single.just(42) })
あなたが行うSingleSource
を作成します: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