gpt4 book ai didi

static - 如何使用 PowerMock 模拟返回 void 的静态方法?

转载 作者:行者123 更新时间:2023-12-01 22:00:01 25 4
gpt4 key购买 nike

我的项目中有一些静态 util 方法,其中一些只是传递或抛出异常。有很多关于如何模拟返回类型不是 void 的静态方法的示例。但是我如何模拟一个将 void 返回为“doNothing()”的静态方法呢?

非 void 版本使用以下代码行:

@PrepareForTest(StaticResource.class)

...

PowerMockito.mockStatic(StaticResource.class);

...

Mockito.when(StaticResource.getResource("string")).thenReturn("string");

但是,如果应用于返回 voidStaticResources,编译器会提示 when(T) 不适用于 void。 .

有什么想法吗?

一种解决方法可能是让所有静态方法返回一些 Boolean 以获得成功,但我不喜欢解决方法。

最佳答案

您可以像这样 stub 静态 void 方法:

PowerMockito.doNothing().when(StaticResource.class, "getResource", anyString());

虽然我不确定你为什么要麻烦,因为当你调用 mockStatic(StaticResource.class) 时,StaticResource 中的所有静态方法默认都会被 stub

更有用的是,您可以捕获传递给 StaticResource.getResource() 的值,如下所示:

ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);
PowerMockito.doNothing().when(
StaticResource.class, "getResource", captor.capture());

然后您可以像这样评估传递给 StaticResource.getResource 的字符串:

String resourceName = captor.getValue();

关于static - 如何使用 PowerMock 模拟返回 void 的静态方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34451814/

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