2015-09-07 12 views
5

Mam następujący kod, który pobiera bieżącą wartość licznika z DB. Następnie aktualizuje licznik w DB, a następnie ponownie pobiera wartość.Jak zwracać różne wartości dla różnych wywołań próbnych?

int current = DBUtil.getCurrentCount(); 
DBUtil.updateCount(50);// it updates the current count by adding 50 
int latest = DBUtil.getCurrentCount(); 

Chcę mock statycznych metod w taki sposób, że pierwsze wezwanie powinien powrócić 100, a drugi nabór powinien powrócić 150. Jak można używać PowerMockito do osiągnięcia tego celu? Używam TestNG, Mockito wraz z PowerMock.

+0

Dlaczego 'DBUtil' jest statyczny? Wstrzyknij instancję, wtedy nie potrzebujesz PowerMocka. – durron597

Odpowiedz

10

Mockito obsługuje zmianę zwróconej wartości; to wsparcie rozciąga się na PowerMockito. Wystarczy użyć OngoingStubbing.thenReturn(T value, T... values)

OngoingStubbing<T> thenReturn(T value, T... values) 

Zestawy kolejnych wartości zwracanych zostać zwrócone, gdy wywoływana jest metoda.
Np:

when(mock.someMethod()).thenReturn(1, 2, 3); 

ostatniej wartości powrotu w sekwencji (w przykładzie 3) określa działanie dalszych kolejnych połączeń.

Tak więc, w tym przypadku, to zrobi:

PowerMockito.when(DBUtil.getCurrentCount()).thenReturn(100, 150); 

Uwaga: ta odpowiedź zakłada, że ​​już wie, jak wyśmiewać static metod. Jeśli nie, zobacz this question.

Powiązane problemy