Подтвердить что ты не робот

Как использовать Mockito, как перехватить объект обратного вызова по методу void?

Я использую mockito для тестирования устаревшего модуля входа JAAS/LDAP.

Интерфейс javax.security.auth.callback.CallbackHandler определяет функцию:

void handle(javax.security.auth.callback.Callback[] callbacks)

Я ожидаю, что callbacks будет содержать NameCallback, который должен быть обработан для прохождения теста.

Есть ли способ обмануть это эффективно, или мне будет лучше с пропущенной реализацией CallbackHandler?

4b9b3361

Ответ 1

Для возвращаемых функций void используйте doAnswer()

doAnswer(...).when(mockedObject).handle(any(Callback[].class));

И Answer, который выполняет перехват, должен идти как параметр doAnswer, например. как анонимный класс:

new Answer() {
  public Object answer(InvocationOnMock invocation) {
      Object[] args = invocation.getArguments();
      Mock mock = invocation.getMock();
      return null;
  }}

В этом случае args будет массив Callback[]!