public void makeLoginRequest(){
view.log(sessionHandler.getEncodedCredentials());
Call loginCall = apiService.getLoginInfo("application/json", "application/json"
, "SPT", "Android", sessionHandler.getEncodedCredentials());
loginCall.enqueue(new Callback<User>() {
@Override
public void onResponse(Call<User> call, Response<User> response) {
handleLoginResponse(response);
}
@Override
public void onFailure(Call<User> call, Throwable t) {
handleLoginFailure(t);
}
});
}
我正在尝试用JUnit和Mockito测试这种方法。此方法属于表示器类。为了测试这个,我运行 presenter.makeLoginRequest();
然后调用onResponse时我使用从不被调用的verify(presenter).handleLoginResponse(response);
。问题是它将继续运行所有内容 handleLoginResponse(response);
.我不想执行此方法中的内容,而只需要验证是否调用了此方法。如何忽略方法执行,或者测试此方法的最佳方法是什么?
有两种方法可以做到这一点:
- 使演示者成为
mock
对象
presenter = mock<Presenter>()
- 将此添加到测试中
doNothing().when(presenter).handleLoginResponse(any());