0
我正在測試一個調用幫助器庫方法的方法,該方法返回一個Observable<Void>
,並在完成後運行它的邏輯flatMap
並調用一個API終點,該終點返回Observable<SomeObject>
。RxJava Mockito何時 - 返回已解析的可觀察對象
我遇到的問題是,在我的測試中從來沒有去過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)
呃,我覺得自己很愚蠢。謝謝 –