2015-09-07 33 views
5

Ho il seguente codice che sta ottenendo il valore corrente del contatore dal DB. Quindi aggiorna il contatore in DB e quindi recupera nuovamente il valore.Come posso restituire valori diversi su chiamate diverse a una simulazione?

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

voglio deridere i metodi statici in modo tale che la prima chiamata deve restituire 100 e la seconda chiamata deve restituire 150. Come posso utilizzare PowerMockito per raggiungere questo obiettivo? Sto usando TestNG, Mockito insieme a PowerMock.

+0

Perché 'DBUtil' statico? Iniettare un'istanza, quindi non è necessario PowerMock. – durron597

risposta

10

Mockito supporta la modifica del valore restituito; questo supporto si estende a PowerMockito. Basta usare OngoingStubbing.thenReturn(T value, T... values)

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

imposta i valori di ritorno consecutivi da restituire quando il metodo viene chiamato.
es:

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

Ultimo valore restituito nella sequenza (nell'esempio: 3) determina il comportamento di ulteriori chiamate consecutive.

Quindi, in questo caso, si dovrebbe fare:

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

Nota: questa risposta presuppone che si conosce già come deridere static metodi. In caso contrario, vedere this question.