2013-05-29 17 views
5

jestem po prostu zaczynając Mockito a ja po prostu chcesz zrobić coś takiego:Mockito wywołać metodę na parametrem wyśmiewali metody

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()); 

Napij podpowiedź rade? Dziękujemy za pomoc!

+0

Nie chcę, aby wyczyścić listę umieścić w parametrach gdy metoda 'clearList (lista L)' jest tzw. – Thomas

+0

Makiety 'doVeryLOOOONGDatabaseCallll()' not 'clearList()'. Szyderstwo nie polega na zmianie zachowania wewnątrz metod; to sprawia, że ​​nie potrzebujesz zewnętrznych zależności. –

+0

Dziękuję Brian, ale jest to metoda statyczna, chciałem tylko uprościć rzeczy. Nie mogę tego wyśmiać. – Thomas

Odpowiedz

16

Coś takiego powinno wystarczyć (nie testowane):

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

Jesteś imponujący, testuję to teraz !! – Thomas

+0

TO WŁAŚNIE DZIAŁA NIESAMOWITE !! – Thomas

+0

Jesteś moim bohaterem. – Thomas

Powiązane problemy