Ich teste eine Methode, die eine Hilfsbibliotheksmethode aufruft, die eine Observable<Void>
zurückgibt und nach Abschluss führt es seine Logik in flatMap
und ruft einen API-Endpunkt auf, der eine Observable<SomeObject>
zurückgibt.RxJava Mockito wenn - eine aufgelöste Observable zurückgeben
Das Problem, das ich habe, ist, dass in meinem Test nie auf die FlatMap kommt. Hier
@Mock private RequestHelperSourceImpl requestHelper;
@Mock private OrdersRepositoryImpl repository;
// setup & teardown code…
@Test
public void shouldSingleOrder() {
SingleOrder singleOrder = mock(SingleOrder.class);
TestSubscriber<SingleOrder> testSubscriber = new TestSubscriber<>();
when(requestHelper.doJwtRequest(anyString())).thenReturn(Observable.just(null));
when(repository.getOrder(anyLong(), anyString(), anyString(), anyInt())).thenReturn(Observable.just(singleOrder));
// The method I'm testing
spySubject.getOrder(anyInt(), anyString());
testSubscriber.assertValue(singleOrder);
}
ist der Code für die Methode Ich teste
@Override
public Observable<SingleOrder> getOrder(long orderId, String jwtToken) {
return requestHelper.doJwtRequest(jwtToken)
.flatMap(Void -> {
////////<------ It never gets here
return repository.getOrder(
orderId,
requestHelper.getAccessToken(),
jwtToken,
jtApp.isTryoutInt()
).compose(JTRxUtils.applySchedulers());
});
}
Und hier ist die Signatur für doJwtRequest
Observable<Void> doJwtRequest(String jwt);
Hier ist der Fehler, den ich bekommen, wenn die Durchführung des Tests:
java.lang.AssertionError: Number of items does not match. Provided: 1 Actual: 0.
Provided values: [singleOrder]
Actual values: []
(0 completions)
Duh, ich fühle mich dumm für das Vergessen. Vielen Dank –