如何防止一个方法在测试中调用另一个方法


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); .我不想执行此方法中的内容,而只需要验证是否调用了此方法。如何忽略方法执行,或者测试此方法的最佳方法是什么?

有两种方法可以做到这一点:

  1. 使演示者成为mock对象
presenter = mock<Presenter>()
  1. 将此添加到测试中
doNothing().when(presenter).handleLoginResponse(any()); 

相关内容

  • 没有找到相关文章

最新更新