代码之家  ›  专栏  ›  技术社区  ›  6rchid

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

  •  0
  • 6rchid  · 技术社区  · 7 年前
    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);
            }
        });
    }
    

    presenter.makeLoginRequest(); 然后当调用onResponse时 我用 verify(presenter).handleLoginResponse(response); 从来没有人打过电话。问题是,它将继续在全球范围内运行一切 handleLoginResponse(response); . 我不想执行此方法中的内容,但只需要验证是否调用了此方法。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Bach Vu    7 年前

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

    1. 让您的演示者成为 mock 对象
    presenter = mock<Presenter>()
    
    doNothing().when(presenter).handleLoginResponse(any());