java - 如何模拟带有参数和字符串返回类型的静态方法?
问题描述
使用 Mockito-inline (3.12.4) 并遵循https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html#static_mocks中的文档
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-inline</artifactId>
<version>3.12.4</version>
<scope>test</scope>
</dependency>
但仍然出现以下错误:
org.mockito.exceptions.misusing.MissingMethodInvocationException:
when() requires an argument which has to be 'a method call on a mock'.
For example:
when(mock.getArticles()).thenReturn(articles);
Also, this error might show up because:
1. you stub either of: final/private/equals()/hashCode() methods.
Those methods *cannot* be stubbed/verified.
Mocking methods declared on non-public parent classes is not supported.
2. inside when() you don't call method on mock but on some other object.
public class StaticCLass extends SuperStaticCLass {
//... some methods
}
public class SuperStaticClass {
public static String getSomeStringAfterSomeProcess(SomeObject object)
{
return SomeProcess.process(object);
}
}
我的代码将如下所示:
try (MockedStatic<StaticCLass> mocked = Mockito.mockStatic(StaticCLass.class)) {
mocked.when(() -> StaticCLass.getSomeStringAfterSomeProcess(param))
.thenReturn("Some Value");
}
解决方案
推荐阅读
- javascript - 用新元素包装一部分innerHTML
- c# - MS-Graph-SDK 无法将文件夹添加到云端硬盘
- java - 我可以用什么代替 hbaseTemplate.find(TableName,Scan,ROwMapper)?
- python - 如何从文本文件的 URL 中获取特定的文本块?
- python - 如何从python将'a {sv}' dbus签名传递给udisks2.Mount()?
- java - 使用 Ajax 请求时出现 HttpMediaTypeNotSupportedException
- javascript - 错误:重新渲染过多。React 限制了渲染的数量以防止无限循环。反应JS
- c++ - 我想从 chronos 持续时间中减去一个浮点数
- c# - 基于4点实例化
- mapreduce - Map Reduce Job 中的 Partition、Merge、Sort 运行在哪里?