2017-01-16 87 views
0

我想,如果驗證通過別人編寫測試用例對於返回數據的函數拋出異常測試RxJava例外與TestSubscriber

private String validate(Test test) { 
    //Validation Logic which returns null or throws Exception 

    } 

    public Observable<Test> create(Test test) { 
     return Observable 
       .just(validate(test)) 
       .flatMap(x -> testRepository 
         .create(test)); 
    } 

測試用例相同

@Test 
    public void Should_ThrowException_When_NoData() { 
     Test test = sampleTest(); 
     TestSubscriber<Test> subscriber = new TestSubscriber<>(); 
     testService 
       .create(test) 
       .subscribe(subscriber); 
     subscriber.awaitTerminalEvent(); 
     Throwable thrown = subscriber.getOnErrorEvents().get(0); 
     assertThat(thrown) 
       .isInstanceOf(CustomException.class) 
       .hasFieldOrPropertyWithValue("errorId", 102); 

    } 

但測試大小寫在testService.create本身上失敗。

這裏有什麼問題?

感謝

+0

由於您在使用返回值創建Observable之前調用'validate()',所以失敗。 – akarnokd

+0

好的,那該如何解決? –

+0

'fromCallable(() - > validate(test))' – akarnokd

回答

2

因爲你它的返回值之前調用validate()它無法被用於創建觀測。相反,您可以撥打fromCallable(() -> validate(test))並推遲執行validate