java - 使用参数映射模拟 jdbctemplate
问题描述
我正在尝试使用 Mockito 模拟对 jdbctemplate.query 的调用以获取以下代码行
jdbcTemplate.query(sql, paramMap, (rs, rowNum) -> rowMapper(rs))
其中参数分别为String、Map和ResultSetExtractor
当我尝试使用 Mockito 模拟它时,我遇到了编译错误,下面是单元测试中的代码
when(jdbcTemplate.query(ArgumentMatchers.anyString(), ArgumentMatchers.anyMap(), ArgumentMatchers.any())).thenAnswer(invocation -> {
....
}
我得到的错误是
无法解析方法查询(java.lang.String,java.util.Map,T)
解决方案
Mockito 对泛型的处理非常糟糕,因为未编译尝试将 any() 替换为 any(ResultSetExtractor.class)
when(jdbcTemplate.query(ArgumentMatchers.anyString(), ArgumentMatchers.anyMap(), ArgumentMatchers.any(ResultSetExtractor.class))).thenAnswer(invocation -> {
....
}
推荐阅读
- join - Pyspark - 如何根据查找表重命名列名?
- jquery - Kendo Grid Detail Init 事件未在 IE 浏览器中触发
- sql - MariaDB 列按小时分组,行按标题分组
- c# - Linq 到对象,列表
,其中项目由列表组成 - javascript - 使用 Date.now() 的 javascript 中的 1 秒间隙
- java - java源文件的编码
- javascript - 在 React Js 中使用多个复选框过滤列表
- nativescript - 如何在 nativescript 中进行水平轮播布局?
- ios - 如何防止在 UIPicker 视图中快速选择无效日期?
- php - 我在 MYSQL 中的 PHP PDO 更新计数器是 +3 而不是 +1?