java - Usando Mockito, ¿cómo puedo interceptar un objeto de devolución de llamada en un método vacío?
unit-testing callback (1)
Para las funciones que vuelven void
, use doAnswer ()
doAnswer(...).when(mockedObject).handle(any(Callback[].class));
Y una Answer
que realiza la intercepción debe entrar como el parámetro para hacer una 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 matriz Callback[]
!
Estoy usando mockito para probar un módulo de inicio de sesión JAAS / LDAP heredado.
La interfaz javax.security.auth.callback.CallbackHandler
define la función:
void handle(javax.security.auth.callback.Callback[] callbacks)
Estoy esperando que las callbacks
de callbacks
contengan un NameCallback
, que es el objeto que necesita ser manipulado para pasar la prueba.
¿Hay alguna manera de burlarse de esto de manera efectiva, o estaría mejor con una implementación obsoleta de CallbackHandler
?