2017-11-11 1 views
0

을 rxjava2 :Mockito 결코() andThen 작동하지 내가 코 틀린로 작성된 코드의 아주 간단한 조각을 테스트입니다

o1.updateUser(params) 
    .andThen(o2.reload()) 

updateUser 내가 그 다시로드가 실행되지 않습니다 기대 실패합니다. 그러나 Mockito 2와 jUnit 5로 테스트 할 때 상기 모의의 호출이 있습니다.

조롱 그런 식으로 이루어집니다 :

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.

관련 문제