I have the following code which is getting the current counter value from DB. Then it updates the counter in DB and then again it retrieves the value.
int current = DBUtil.getCurrentCount();
DBUtil.updateCount(50);// it updates the current count by adding 50
int latest = DBUtil.getCurrentCount();
I want to mock the static methods in such a way that the first call should return 100 and the second call should return 150. How can I use PowerMockito to achieve this? I am using TestNG, Mockito along with PowerMock.
Mockito supports changing the returned value; this support extends to PowerMockito. Just use OngoingStubbing.thenReturn(T value, T... values)
OngoingStubbing<T> thenReturn(T value, T... values)
Sets consecutive return values to be returned when the method is called.
E.g:when(mock.someMethod()).thenReturn(1, 2, 3);
Last return value in the sequence (in example: 3) determines the behavior of further consecutive calls.
So, in this case, you would do:
PowerMockito.when(DBUtil.getCurrentCount()).thenReturn(100, 150);
Note: this answer assumes you already know how to mock static
methods. If you do not, see this question.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With