Как предотвратить вызов метода другим методом в тесте? - PullRequest
0 голосов
/ 12 февраля 2019
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 Ответ

0 голосов
/ 12 февраля 2019

Есть 2 способа сделать это:

  1. Сделать вашего докладчика объектом mock
presenter = mock<Presenter>()
Добавьте это к вашему тесту
doNothing().when(presenter).handleLoginResponse(any()); 
...