2016-11-29 11 views
0

Я тестирую метод, который вызывает метод вспомогательной библиотеки, который возвращает 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) 

ответ

0

Вы должны по крайней мере, подписаться на TestSubscriber:

spySubject 
.getOrder(anyInt(), anyString()) 
.subscribe(testSubscriber); 

Если ваш код является асинхронным (потому что у вас есть переключатель планировщика), преобразовать в блокирующий Наблюдаемые первый.

+0

Дух, я чувствую себя глупо за то, что забыл. благодаря –