繁体   English   中英

PowerMock Mockito:如何模拟所有静态方法?

[英]PowerMock Mockito: how to mock all static methods?

使用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

不,您可以在PowerMockito中使用间谍使用部分模拟。 或者,您可以使用存根API:

stub(method(MockMe.class, "getInstance")).toReturn(myMockMeInstance);

模拟静态方法如何模拟和存根:

在类级别添加@PrepareForTest

@PrepareForTest(Static.class) // Static.class contains static methods

调用PowerMockito.mockStatic()模拟一个静态类(使用PowerMockito.spy(class)模拟一个特定的方法):

PowerMockito.mockStatic(Static.class);

只需使用Mockito.when()来设置您的期望:

Mockito.when(Static.firstStaticMethod(param)).thenReturn(value);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM