将模拟的静态方法传递给另一个 class
Passing mocked static method to another class
我在测试 class 中使用 Powermock 模拟了一个 class 的静态方法。我面临的问题是这个静态方法在我的测试class中不是直接调用的,而是在其他一些class中调用的。这是骨架:
@Test public void myTest() {
PowerMockito.mockStatic(MyClassWithStaticMethod.class);
PowerMockito.when(MyClassWithStaticMethod.staticMethod()).thenReturn("...");
List<String> details = MyHelperClass.getDetails();
...
...
}
现在 MyHelperClass.getDetails 调用需要模拟的方法,因为它依赖于服务。
MyHelperClass.java
public static List<String> getDetails() {
...
...
MyObj obj = MyClassWithStaticMethod.staticMethod(); //This needs to return mocked value
...
...
}
有没有办法将模拟对象传递给助手 class? PowerMockito.mockStatic returns void,其中 PowerMockito.mock 不模拟静态方法。所以我无法弄清楚如何将模拟对象传递给助手 class getDetails() 方法。
我在测试 class 中使用 Powermock 模拟了一个 class 的静态方法。我面临的问题是这个静态方法在我的测试class中不是直接调用的,而是在其他一些class中调用的。这是骨架:
@Test public void myTest() {
PowerMockito.mockStatic(MyClassWithStaticMethod.class);
PowerMockito.when(MyClassWithStaticMethod.staticMethod()).thenReturn("...");
List<String> details = MyHelperClass.getDetails();
...
...
}
现在 MyHelperClass.getDetails 调用需要模拟的方法,因为它依赖于服务。
MyHelperClass.java
public static List<String> getDetails() {
...
...
MyObj obj = MyClassWithStaticMethod.staticMethod(); //This needs to return mocked value
...
...
}
有没有办法将模拟对象传递给助手 class? PowerMockito.mockStatic returns void,其中 PowerMockito.mock 不模拟静态方法。所以我无法弄清楚如何将模拟对象传递给助手 class getDetails() 方法。