我正在使用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事件。
我该怎么办?
答案 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();
}
});
}