Используя Mockito, как мне перехватить объект обратного вызова в методе пустота?
-
01-10-2019 - |
Вопрос
Я использую Mockito для проверки устаревшего модуля входа в систему JAAS / LDAP.
То javax.security.auth.callback.CallbackHandler
Интерфейс определяет функцию:
void handle(javax.security.auth.callback.Callback[] callbacks)
Я ожидаю callbacks
Содержать А. NameCallback
, который является объектом, который необходимо манипулировать для передачи теста.
Есть ли способ менять это эффективно, или мне было бы лучше с неподвижной реализацией CallbackHandler
?
Решение
Для возврата функций 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[]
!
Не связан с StackOverflow