jdbcTemplate上的mockito抛出编译错误
问题描述:
我试图嘲笑jdbcTemplate抛出异常。jdbcTemplate上的mockito抛出编译错误
我试图抛出异常此方法上的JdbcTemplate
<T> List<T> query(String sql, Object[] args, RowMapper<T> rowMapper)
这里是我有什么
@MockBean
JdbcTemplate jdbcTemplate;
Mockito.doThrow(exception).when(jdbcTemplate.query(anyString(), anyList(), any(MyMapper.class)));
我得到的编译错误,cannot resolve method
。我也试过
Mockito.doThrow(exception).when(jdbcTemplate.query(anyString(), anyList(), Matchers.<RowMapper<MyMapper>>any()));
但仍然得到相同的错误。
什么是正确的方法来做到这一点?
编辑
正如答案的一个建议,我试图
Mockito.doThrow(exception).when(jdbcTemplate).query(anyString(), anyList(), any(MyMapper.class));
我仍然得到cannot resolve the method
错误。
答
尝试:
Mockito.doThrow(exception).when(jdbcTemplate).query(anyString(), anyList(), any(MyMapper.class));
的when()
调用来包装你的模拟;你不打电话给when()
调用你的方法之后,你打包后向Mockito表明你期望发生什么。
答
下面的调用将编译:
Mockito.doThrow(exception).when(jdbcTemplate).query(
Mockito.anyString(),
Mockito.any(Object[].class),
Mockito.any(MyMapper.class)
);
Mockito.doThrow(exception).when(jdbcTemplate).query(
Mockito.anyString(),
Mockito.any(Object[].class),
ArgumentMatchers.<RowMapper<MyMapper>>any())
);
这些和你以前尝试过什么之间的主要区别是第二个参数。在这种方法中:
<T> List<T> query(String sql, Object[] args, RowMapper<T> rowMapper) throws DataAccessException;
...第二个参数是:
Object[] args
它看起来就像你用anyList()
返回List<T>
匹配此。由于此参数的类型为Object[]
,因此应该与返回Object[]
的东西匹配。例如:
Mockito.any(Object[].class)
请提供一些细节,说明为什么这会起作用。 – mega6382
这也没有工作。我仍然得到“无法解决方法” –
您是否调试过并确保您的jdbcTempalte确实通过模拟正确填充? – dillius