2016-05-10 30 views
2

我正在測試此代碼。如何模擬改造服務observable調用onError?

service.getProducts() 
      .subscribeOn(Schedulers.io()) 
      .observeOn(AndroidSchedulers.mainThread()) 
      .subscribe(new Subscriber<Result<Catalog<SoajsProductPreview>>>() { 

       @Override 
       public void onError(Throwable e) { 
        view.showErrorView(e); 
       } 

       @Override 
       public void onNext(Result<Product> products) { 
        view.showProducts(products) 
       } 

       @Override 
       public void onCompleted() {} 
      }); 

測試view.showProducts()模擬服務返回結果工作正常。 我做

when(service.getProducts().thenReturn(someObservable); 

現在我想測試view.ShowErrorView()被稱爲當服務拋出一個錯誤,但我無法找到一個方法來做到這一點:

顯然以下不編譯

when(service.getProducts().thenReturn(someException); 

這立即引發異常,但不調用用戶的onError方法

when(service.getProducts().thenReturn(someException); 

我怎樣才能得到Subscriber.onError()叫?

回答

11
when(service.getProducts().thenReturn(Observable.error(someException)) 

應該工作。請參閱從here開始的文檔。