2013-05-29 13 views
5

Sto solo cominciando con Mockito e voglio solo fare qualcosa di simile:Mockito chiamare un metodo su un parametro di un metodo deriso

public class Test {  
    public void clearList(List l){ 
     doVeryLOOOONGDatabaseCallll(); 
     l.clear(); 
     return; 
    } 
} 

/// ... 
Test test = mock(Test.class); 
Mockito.when(test.clearList(any(List.class))).then(l => l.clear()); 

Qualche suggerimento per fare il trucco? Grazie per il vostro aiuto!

+0

No, voglio cancellare l'elenco messo in parametri quando il metodo 'clearList (lista L)' viene chiamato. – Thomas

+0

Mock 'doVeryLOOOONGDatabaseCallll()' not 'clearList()'. Il mocking non riguarda il cambiamento del comportamento all'interno dei metodi; lo sta facendo in modo da non aver bisogno di dipendenze esterne. –

+0

Grazie Brian, ma è un metodo statico, volevo solo semplificare le cose. Non posso deriderlo. – Thomas

risposta

16

Qualcosa del genere dovrebbe farlo (non testato):

doAnswer(new Answer() { 
    public Object answer(InvocationOnMock invocation) { 
     Object[] args = invocation.getArguments(); 
     List<?> list = (List<?>) args[0]; 
     list.clear(); 
     return null; 
    } 
}).when(test).clearList(any(List.class)); 
+0

Sei piuttosto impressionante, lo sto testando proprio ora !! – Thomas

+0

ESSO FUNZIONA INCREDIBILE !! – Thomas

+0

Sei il mio eroe. – Thomas

Problemi correlati