我有以下代码从DB获取当前计数器值。然后它更新DB中的计数器,然后再次检索值。
int current = DBUtil.getCurrentCount();
DBUtil.updateCount(50);// it updates the current count by adding 50
int latest = DBUtil.getCurrentCount();
我想以这样的方式模拟静态方法,即第一个调用应返回100,第二个调用应返回150.如何使用PowerMockito实现此目的?我正在使用TestNG,Mockito和PowerMock。
答案 0 :(得分:15)
Mockito支持更改返回值;这种支持扩展到PowerMockito。只需使用OngoingStubbing.thenReturn(T value, T... values)
**(s + 1)
设置调用方法时返回的连续返回值 例如:
OngoingStubbing<T> thenReturn(T value, T... values)
序列中的最后一个返回值(例如:3)确定了进一步连续调用的行为。
所以,在这种情况下,你会这样做:
when(mock.someMethod()).thenReturn(1, 2, 3);
注意:此答案假设您已经知道如何模拟PowerMockito.when(DBUtil.getCurrentCount()).thenReturn(100, 150);
方法。如果不这样做,请参阅this question。