Usando Mockito, ¿cómo puedo interceptar un objeto de devolución de llamada en un método vacío?

StackOverflow https://stackoverflow.com/questions/3581754

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ó?

¿Fue útil?

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
scroll top