2016-05-10 31 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开始的文档。