0
我想測試代碼的重試:重試在rxJava
public Observable<Foo> getFoo() {
return barService.getBar()
.retry(3)
.map(barToFoo);
}
和單元測試:
//given
barService = Mockito.mock(BarService.class)
PublishSubject<Bar> barSubject= PublishSubject.create();
when(barService.getBar()).thenReturn(barSubject);
TestSubscriber<Foo> fooProbe= new TestSubscriber<>();
getFoo().subscribe(fooProbe);
//when
barSubject.onError(new RuntimeException("bar exception"));
barSubject.onNext(new Bar())
//then
fooProbe.assertNoErrors();
fooProbe.assertValue(new Bar());
失敗java.lang.AssertionError: Unexpected onError events: 1
調用'onError'或'onCompleted'帶來的'Subject's到終端狀態,沒有進一步的事件被接受/轉發。 – akarnokd
瞭解。那麼正確的方法是什麼? – Blitzkr1eg
如果你想用錯誤場景測試你的重試,你必須考慮你的代碼在哪種情況下可能導致onError並在你的測試中利用它。但正如他們告訴你的,調用onError或OnComplete將使主題完成。 – paul