2015-09-07 17 views
5

Şu anki sayaç değerini DB'den alabilen şu koda sahibim. Ardından, DB'deki sayacı günceller ve sonra tekrar değeri alır.Farklı çağrılardaki farklı değerleri alamaya nasıl dönüşürüm?

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

ben ilk çağrı 100 dönmelidir ve ikinci çağrı nasıl PowerMockito Bunu başarmak için kullanabileceği 150. dönmelidir şekilde statik yöntemler taklit istiyor? PowerMock ile birlikte TestNG, Mockito kullanıyorum.

+0

Neden DBUtil statik? Bir örnek enjekte, sonra PowerMock'a ihtiyacınız yok. – durron597

cevap

10

Mockito, döndürülen değeri değiştirmeyi destekler; Bu destek PowerMockito'ya uzanır. Sadece yöntemi çağrıldığında iade edilecek OngoingStubbing.thenReturn(T value, T... values)

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

Setleri ardışık dönüş değerleri kullanın.
Örn: sırayla

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

Son dönüş değeri (örnekte: 3) ayrıca, üst üste aramaların davranışını belirler.

Yani, bu durumda, yapardın:

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

Not: Bu yanıt zaten static yöntemleri alay bilen varsayar. Bunu yapmazsanız, bkz. this question.