MockWebServer捕获错误

时间:2015-12-04 15:01:23

标签: android unit-testing rx-java

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

我的restAdapter有一个自定义错误处理程序,根据错误代码返回自定义throwable:

RestAdapter restAdapter = new RestAdapter.Builder().setErrorHandler(new RetrofitErrorHandler(context))

我尝试使用TestSubscriber并订阅如下:

    TestSubscriber<X> testSubscriber = new TestSubscriber<>();
    Observable<X> observable = mService.myCall(null, email);

    observable.subscribe(testSubscriber);

但.getOnErrorEvents()返回0事件。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

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

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

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();
                }
            });
}