bra*_*orm 1 spring mocking jdbctemplate junit4 mockito
我试图模拟jdbcTemplate抛出异常.
我试图在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)));
Run Code Online (Sandbox Code Playgroud)
我得到编译错误,cannot resolve method.我也试过了
Mockito.doThrow(exception).when(jdbcTemplate.query(anyString(), anyList(), Matchers.<RowMapper<MyMapper>>any()));
Run Code Online (Sandbox Code Playgroud)
但仍然得到相同的错误.
在这里做正确的方法是什么?
编辑
正如其中一个答案中所建议的,我试过了
Mockito.doThrow(exception).when(jdbcTemplate).query(anyString(), anyList(), any(MyMapper.class));
Run Code Online (Sandbox Code Playgroud)
我仍然得到cannot resolve the method错误.
以下调用将编译:
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())
);
Run Code Online (Sandbox Code Playgroud)
这些与之前尝试的内容之间的关键区别在于第二个参数.在这个方法中:
<T> List<T> query(String sql, Object[] args, RowMapper<T> rowMapper) throws DataAccessException;
Run Code Online (Sandbox Code Playgroud)
......第二个论点是:
Object[] args
Run Code Online (Sandbox Code Playgroud)
看起来你正在匹配这个anyList()返回List<T>.由于此参数属于类型,Object[]因此应与返回的参数匹配Object[].例如:
Mockito.any(Object[].class)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1107 次 |
| 最近记录: |