首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MockWebServer捕获错误

MockWebServer捕获错误
EN

Stack Overflow用户
提问于 2015-12-04 23:01:23
回答 1查看 186关注 0票数 1

我正在使用RxJava,Retrofit和MockWebServer,我正在对我的服务进行单元测试。

我的restAdapter有一个自定义的错误处理程序,根据错误代码返回一个自定义的可抛出对象:

代码语言:javascript
复制
RestAdapter restAdapter = new RestAdapter.Builder().setErrorHandler(new RetrofitErrorHandler(context))

我尝试使用TestSubscriber并像这样订阅:

代码语言:javascript
复制
    TestSubscriber<X> testSubscriber = new TestSubscriber<>();
    Observable<X> observable = mService.myCall(null, email);

    observable.subscribe(testSubscriber);

但是.getOnErrorEvents()返回0事件。

我该怎么做?

EN

回答 1

Stack Overflow用户

发布于 2016-03-04 01:30:34

即使状态代码与2XX不同,Retrofit也会作为成功的onNext事件返回任何类型的响应。

我建议映射响应,如果response.isSuccess()方法返回false,则手动抛出一个错误。

代码语言:javascript
复制
public Observable<UserEntity> loginUser(UserEntity user, String password) {
    return this.restApi.doLogin(user.getEmail(), password)
            .map(new Func1<Response<UserEntity>, UserEntity>() {
                @Override
                public UserEntity call(Response<UserEntity> userEntityResponse) {
                    if (!userEntityResponse.isSuccess()) throw new RuntimeException();
                    return userEntityResponse.body();
                }
            });
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34091216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档