首页 > 解决方案 > 使用参数映射模拟 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)

标签: javamockito

解决方案


Mockito 对泛型的处理非常糟糕,因为未编译尝试将 any() 替换为 any(ResultSetExtractor.class)

when(jdbcTemplate.query(ArgumentMatchers.anyString(), ArgumentMatchers.anyMap(), ArgumentMatchers.any(ResultSetExtractor.class))).thenAnswer(invocation -> {
....
}

推荐阅读