Do we need to mock all static methods of a class when using PowerMock (with Mockito)? I mean, suppose we have:
class MockMe {
public static MockMe getInstance(){
//return new Instance via complex process;
}
public static List<X> anotherStaticMethod(){
// does xyz
}
}
My question, if I need to mock getInstance method, is it necessary to mock "anotherStaticMethod" as well?
PowerMock version:1.3, Mockito version:1.8
No you can use partial mocking using spy in PowerMockito. Or you can use the stubbing API:
stub(method(MockMe.class, "getInstance")).toReturn(myMockMeInstance);
Mocking Static Method
How to mock and stub:
Add @PrepareForTest
at class level.
@PrepareForTest(Static.class) // Static.class contains static methods
Call PowerMockito.mockStatic()
to mock a static class (use PowerMockito.spy(class) to mock a specific method):
PowerMockito.mockStatic(Static.class);
Just use Mockito.when()
to setup your expectation:
Mockito.when(Static.firstStaticMethod(param)).thenReturn(value);