使用PowerMock(使用Mockito)时,是否需要模拟类的所有静态方法?我的意思是,假设我们有:
class MockMe {
public static MockMe getInstance(){
//return new Instance via complex process;
}
public static List<X> anotherStaticMethod(){
// does xyz
}
}
我的问题是,如果我需要模拟getInstance方法,是否有必要模拟“anotherStaticMethod”?
PowerMock版本:1.3,Mockito版本:1.8
答案 0 :(得分:6)
不能在PowerMockito中使用spy进行部分模拟。或者您可以使用存根API:
stub(method(MockMe.class, "getInstance")).toReturn(myMockMeInstance);
答案 1 :(得分:0)
模拟静态方法 如何模拟和存根:
在班级添加@PrepareForTest
。
@PrepareForTest(Static.class) // Static.class contains static methods
调用PowerMockito.mockStatic()
来模拟静态类(使用PowerMockito.spy(类)来模拟特定方法):
PowerMockito.mockStatic(Static.class);
只需使用Mockito.when()
来设定您的期望:
Mockito.when(Static.firstStaticMethod(param)).thenReturn(value);