2016-11-29 4 views
0

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) 

Antwort

0

Sie müssen mindestens bis zum TestSubscriber abonnieren:

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

Wenn Ihr Code asynchron ist (weil Sie einen Scheduler-Schalter haben), konvertieren zu einer Blockierung beobachtbare zuerst.

+0

Duh, ich fühle mich dumm für das Vergessen. Vielen Dank –

Verwandte Themen