Usando Mockito, ¿cómo puedo interceptar un objeto de devolución de llamada en un método vacío?
-
01-10-2019 - |
Pregunta
Estoy usando Mockito para probar un módulo de inicio de sesión JAAS legado / LDAP.
La interfaz javax.security.auth.callback.CallbackHandler
define la función:
void handle(javax.security.auth.callback.Callback[] callbacks)
estoy esperando callbacks
para contener una NameCallback
, que es el objeto que debe ser manipuladas para pasar la prueba.
¿Hay una manera de burlarse de esto de manera efectiva, o que sería mejor con una aplicación de CallbackHandler
apagó?
Solución
Para las funciones que regresan void
, el uso doAnswer ()
doAnswer(...).when(mockedObject).handle(any(Callback[].class));
Y un Answer
que realiza la interceptación deben ir 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 args
será la gama Callback[]
!
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow