2015-09-07 4 views
5

Ich habe den folgenden Code, der den aktuellen Zählerwert von der DB erhält. Dann aktualisiert es den Zähler in DB und ruft dann den Wert erneut ab.Wie gebe ich verschiedene Werte bei verschiedenen Aufrufen zu einem Schein zurück?

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

Ich möchte die statischen Methoden in einer solchen Art und Weise verspotten, dass der erste Anruf 100 zurückkehren sollte und der zweite Anruf sollte 150 zurückkehren Wie kann ich PowerMockito dies zu erreichen? Ich verwende TestNG, Mockito zusammen mit PowerMock.

+0

Warum ist 'DBUtil' statisch? Inject eine Instanz, dann brauchen Sie PowerMock nicht. – durron597

Antwort

10

Mockito unterstützt die Änderung des zurückgegebenen Werts; Diese Unterstützung erstreckt sich auf PowerMockito. Verwenden Sie einfach OngoingStubbing.thenReturn(T value, T... values)

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

Sets aufeinander folgende Rückgabewerte zurückgegeben werden, wenn die Methode aufgerufen wird.
Z. B:

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

Last Rückgabewert in der Folge (in Beispiel 3), bestimmt das Verhalten der weiteren aufeinander folgenden Aufrufen.

Also, in diesem Fall würden Sie tun:

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

Hinweis: Diese Antwort vorausgesetzt, dass Sie bereits wissen, wie static Methoden zu verspotten. Wenn nicht, siehe this question.

Verwandte Themen