2015-05-11 9 views
5

Wiem, że można zweryfikować tylko nieważne metody. Ale właściwie pytam się dlaczego. Mockito: Weryfikacja metody boolowskiej (lub innych typów)

Niedawno natknąłem się na test jednostkowy, w którym naprawdę muszę sprawdzić, czy wykonano pewne połączenie. Dokładniej, jest to "newFolder.mkdirs()". Zachowanie tej metody jest w moim przekonaniu prawie "voidy". Ale jako "cecha" deweloperzy dostarczyli tej funkcji typ boolowski, aby sprawdzić, czy akcja zakończyła się powodzeniem, czy też nie.

Fajnie, ale nie obchodzi mnie to w moim teście, w którym rzucam moje drwiny. Chcę tylko upewnić się, że to wezwanie zostało wykonane, tak jakbym chciał zapewnić, że ważne void calls zostały wykonane.

Czy istnieje teraz możliwość zrobienia tego? Utknąłem na tym, nie wyobrażam sobie obejścia tego drobnego problemu:/Ktoś ma dobry, krótki pomysł?


Całkowicie się mylę: wszystko możesz zweryfikować. Zgubiłem klamrę.

miałem:

verify(newFolder.mkdirs()); 

Potrzebowałem:

verify(newFolder).mkdirs(); 

Silly me;)

+0

Nie jestem pewien, co problem ty stoi? Masz na myśli chcesz spróbować coś takiego: 'when (mock.hasNextItem()). ThenAnswer (new Answer() { Odpowiedź obiektu (InvocationOnMock invocation) { named = true; return item; }' Tutaj metoda " hasNextItem() 'zwraca' boolean'. –

Odpowiedz

2

może mam źle, ale gdzie jest napisane, że można zweryfikować tylko void metod?

Na przykład ...

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

Cholera, masz rację, a raczej całkowicie się mylę. "Akceptowałem (newFolder.mkdirs())" zamiast "verify (newFolder) .mkdirs(); "-> Niewłaściwe nawiasy :( – BAER

Powiązane problemy