Я тестирую метод, который вызывает метод вспомогательной библиотеки, который возвращает Observable<Void>
, а по завершении он выполняет свою логику в flatMap
и вызывает конечную точку API, которая возвращает Observable<SomeObject>
.RxJava Mockito when - Возвращение разрешенного наблюдаемого
Проблема, с которой я столкнулась, заключается в том, что в моем тесте никогда не доходит до flatMap.
@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);
}
Вот код для метода я тестирование
@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());
});
}
А вот подпись для doJwtRequest
Observable<Void> doJwtRequest(String jwt);
Вот ошибка я получаю при запуске теста:
java.lang.AssertionError: Number of items does not match. Provided: 1 Actual: 0.
Provided values: [singleOrder]
Actual values: []
(0 completions)
Дух, я чувствую себя глупо за то, что забыл. благодаря –