2017-11-11 15 views
0

をrxjava2。しかし、Mockito 2とjUnit 5を使ってテストすると、その模擬擬似が呼び出されます。Mockito決して()andThenで作業していないが、私はKotlinで書かれたコードのかなり単純な作品をテストしてい

モックがそのように行われます。

given(o1.updateUser(user)).willReturn(Completable.error(IllegalArgumentException()) 
given(o2.reload()).willReturn(Completable.complete()) 

今の問題は、期待通りのコードは、この場合にはO2が実際に呼び出されることはありませんことを意味し、動作しますが、ユニットテストMockitoがあったと主張しながら、ということですo1の呼び出し。次のように

テストアサーションが見えます:

verify(o2, never()).reload() 

は、私はここで何か間違ったことをしましたか?これを回避する方法はありますか?どういうわけかオペレータが間違って理解していますか?あなたがテストで書いたもの

答えて

2

は実際には次のとおりです。

Completable c2 = o2.reload(); 
o1.updateUser(params).andThen(c2); 

あなたはおそらく望んでいたことである:andThenの実行が正常に完了し、加入する場合

o1.updateUser(params).andThen(Completable.defer(() -> o2.reload())); 

この方法では、o2.reload()だけ呼び出されます遅延されたCompletable

関連する問題