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

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

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

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

Я ожидаю обратные вызовы , содержащие NameCallback , объект, которым нужно управлять, чтобы пройти тест.

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

28
задан brasskazoo 27 August 2010 в 06:11
поделиться

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[]!

36
ответ дан 28 November 2019 в 03:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: