2015-05-11 37 views
5

So che è possibile verificare solo i metodi void. Ma in realtà mi chiedo perché. Mockito: verifica un metodo booleano (o altri tipi)

Recentemente sono incappato in un test di unità in cui ho davvero bisogno di verificare che sia stata effettuata una determinata chiamata. Per essere precisi, è "newFolder.mkdirs()". Secondo me il comportamento di questo metodo è praticamente "vuoto". Ma come "caratteristica" gli sviluppatori hanno fornito a questa funzione un tipo di ritorno booleano per vedere se l'azione ha avuto successo o meno.

Bello, ma non mi interessa molto per questo nel mio test in cui lancio le mie finte in giro. Voglio solo assicurarmi che questa stessa chiamata sia stata fatta, proprio come vorrei assicurare che siano state fatte importanti chiamate void.

Quindi c'è ora una possibilità per farlo? Sono abbastanza bloccato su questo, non riesco nemmeno a immaginare un rimedio per quel piccolo problema:/Qualcuno ha avuto una buona, breve idea?


ero totalmente sbagliato: È possibile verificare tutto. Ho sbagliato le parentesi.

ho avuto:

verify(newFolder.mkdirs()); 

avevo bisogno:

verify(newFolder).mkdirs(); 

sciocco me;)

+0

io non sono sicuro di cosa problema stai affrontando? Vuoi dire che vuoi provare qualcosa del tipo: 'when (mock.hasNextItem()). ThenAnswer (new Answer() { Object answer (InvocationOnMock invocation) { called = true; return item; }' Qui il metodo ' hasNextItem() 'restituisce' boolean'. –

risposta

2

forse ho capito male, ma dove si dice che si può verificare solo metodi di vuoto?

Per esempio ...

import org.junit.Test; 
import static org.mockito.Mockito.*; 

public class VoidTest { 

    private interface TestClass { 
     boolean doStuff(String arg); 
    } 

    @Test 
    public void doIt() { 
     TestClass tc = mock(TestClass.class); 

     tc.doStuff("[SOMETHING]"); 

     verify(tc).doStuff("[SOMETHING]"); // OK 
     verify(tc).doStuff("[SOMETHING ELSE ]"); // BOOM! 
    } 
} 
+0

Accidenti hai ragione, o meglio mi sbagliavo completamente. Quello che ho accidentalmente fatto è stato "verificare (newFolder.mkdirs());" invece di "verify (newFolder) .mkdirs(); "-> Parentesi fuori posto :( – BAER