java - 使用泛型类型的模拟方法
问题描述
鉴于此界面:
public interface JsonService {
<T> T read(String path, Class<T> valueType);
}
该方法是这样使用的:
MyClass object = jsonService.read("file.json", MyClass.class);
我想编写单元测试,并模拟这种方法。使用 Mockito,我嘲笑了jsonService
:
private final JsonService jsonService = Mockito.mock(JsonService.class);
我尽我所能嘲笑这个方法:
when(jsonService.<MyClass>read(any(String.class), any(Class.class))).thenReturn(nonNullObject);
当测试运行时,该方法.read()
返回 null 而不是我的“nonNullObject”对象。我认为这与any(Class.class)
不匹配的MyClass.class
.
谢谢您的帮助
解决方案
你可以有严格的匹配器
when(jsonService.<MyClass>read(eq("file.json"),
eq(MyClass.class))).thenReturn(nonNullObject);
推荐阅读
- java - 调用 Retrofit 返回 null
- angular - 如何返回来自响应的数据
- r - 用 ggplot 映射州边界
- python - 来自 Data 的 Pandas DataFrame DDL 语句
- laravel - AWS ElasticSearch Service 上的身份验证最终失败
- git - git status 使用了错误的路径
- python-3.x - 基于大型数据集的文本匹配技术以获取文本匹配 ID
- c++ - 如何将 boost::log::expressions 格式化程序对象插入流以格式化时间戳
- firebase - firebase.User 对象是否包含不应与其他用户共享的敏感数据?
- javascript - Javascript不能附加元素