0
ich den Wiederholungs im Code testen wollen:Retry in rxJava
public Observable<Foo> getFoo() {
return barService.getBar()
.retry(3)
.map(barToFoo);
}
und die Unit-Test:
//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());
nicht mit java.lang.AssertionError: Unexpected onError events: 1
Aufruf 'onError' oder' onCompleted' bringt die 'Subject's in einen Endzustand und keine weiteren Ereignisse werden akzeptiert/weitergeleitet. – akarnokd
Verstanden. Was wäre der richtige Ansatz? – Blitzkr1eg
Wenn Sie Ihren Wiederholungsversuch mit einem Fehlerszenario testen möchten, müssen Sie sich überlegen, in welcher Situation Ihr Code onError verursachen und in Ihrem Test ausnutzen könnte. Aber wie sie Ihnen sagen, wird das Thema mit dem Aufruf onError oder OnComplete beendet. – paul