2010-08-27 15 views
26

Sto usando mockito per testare un modulo di login JAAS/LDAP legacy.Utilizzando Mockito, come posso intercettare un oggetto callback su un metodo void?

L'interfaccia javax.security.auth.callback.CallbackHandler definisce la funzione:

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

mi aspetto callbacks contenere un NameCallback, che è l'oggetto che deve essere manipolato per superare la prova.

C'è un modo per deriderlo efficacemente, o sarei meglio con un'implementazione con stub di CallbackHandler?

risposta

33

Per le funzioni che ritornano void, utilizzare doAnswer()

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

E un Answer che esegue l'intercettazione deve andare in quanto il parametro doAnswer, ad esempio come una classe anonima:

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

In questo caso args sarà la matrice Callback[]!

Problemi correlati