2010-08-27 22 views
26

Estoy usando mockito para probar un módulo de inicio de sesión JAAS/LDAP heredado.Usando Mockito, ¿cómo puedo interceptar un objeto de devolución de llamada en un método de vacío?

La interfaz javax.security.auth.callback.CallbackHandler define la función:

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

Estoy esperando callbacks para contener un NameCallback, que es el objeto que necesita ser manipulada para pasar la prueba.

¿Hay alguna manera de burlarse de esto de manera efectiva, o estaría mejor con una implementación trucada de CallbackHandler?

Respuesta

33

Para las funciones que regresan void, utilice doAnswer()

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

Y un Answer que realiza la interceptación debe ir en como el parámetro a doAnswer, por ejemplo como una clase anónima:

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

En este caso habrá args la matriz Callback[]!

Cuestiones relacionadas