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

时间:2019-02-12 02:49:22

标签: java android junit mockito robolectric

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类。为了测试这个我运行 presenter.makeLoginRequest();然后调用onResponse 我使用了从未被调用的verify(presenter).handleLoginResponse(response);。问题在于它将继续运行handleLoginResponse(response);中的所有内容。我不想执行此方法中的内容,而只需要验证此方法是否被调用即可。 我该如何忽略方法的执行,或者最好的测试方法是什么?

1 个答案:

答案 0 :(得分:1)

有2种方法:

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