2010-08-27 6 views
26

Я использую mockito для тестирования устаревшего модуля входа JAAS/LDAP.Использование Mockito, как перехватить объект обратного вызова по методу void?

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

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

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

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

ответ

33

Для функций, возвращающих 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[]!

 Смежные вопросы

  • Нет связанных вопросов^_^