【问题标题】:How to mock a retrofit service observable calling onError?如何模拟改造服务可观察调用 onError?
【发布时间】:2016-09-05 14:48:40
【问题描述】:

我正在测试这段代码。

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() 被调用?

【问题讨论】:

    标签: unit-testing mockito rx-java retrofit2 rx-android


    【解决方案1】:
    when(service.getProducts().thenReturn(Observable.error(someException))
    

    应该可以。请参阅以here 开头的文档。

    【讨论】:

      猜你喜欢
      • 2017-08-10
      • 2019-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-01
      • 1970-01-01
      相关资源
      最近更新 更多