gpt4 book ai didi

java - 将模拟静态方法传递给另一个类

转载 作者:行者123 更新时间:2023-11-30 08:54:21 25 4
gpt4 key购买 nike

我在我的测试类中使用 Powermock 模拟了一个类的静态方法。我面临的问题是这个静态方法不是在我的测试类中直接调用的,而是在其他一些类中调用的。这是骨架:

@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
...
...
}

有没有办法将模拟对象传递给辅助类? PowerMockito.mockStatic 返回 void,因为 PowerMockito.mock 不模拟静态方法。所以我无法弄清楚如何将模拟对象传递给帮助程序类 getDetails() 方法。

最佳答案

PowerMock 并不能真正实现您想要实现的目标。还有另一个模拟框架,它可以通过检测字节码来模拟几乎所有的东西 - JMockit

至于你的问题 - 也许是that会有帮助

关于java - 将模拟静态方法传递给另一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29437353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com