我正在使用RxJava,Retrofit和MockWebServer,我正在对我的服务进行单元测试。
我的restAdapter有一个自定义的错误处理程序,根据错误代码返回一个自定义的可抛出对象:
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事件。
我该怎么做?
发布于 2016-03-04 01:30:34
即使状态代码与2XX不同,Retrofit也会作为成功的onNext事件返回任何类型的响应。
我建议映射响应,如果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();
}
});
}https://stackoverflow.com/questions/34091216
复制相似问题