如何模拟 jdbcTemplate.query(sqlQuery, new Object[] {id, name}, n



我需要从jdbcTemplate.query()填充模拟列表,以便它可以通过通过非空检查来增加覆盖率。

我试过了

   List<ABC> list=new ArrayList<>();
    list = jdbcTemplate.query(sqlQuery,new Object[]{id,name}, new Mapper());
    if(list.isEmpty())
        return null;
    else if(!list.isEmpty){
            for(....)
    }

测试类

@InjectMocks
DaoImpl dao;
@Mock
JdbcTemplate jdbcTemplate;
@Test
public void retrieveResult(){
when(jdbcTemplate.query(Mockito.anyString(),Mockito.any(Object[].class),Mapper.class)).thenReturn(new ArraList<>);

以下任一模拟声明都将编译并匹配query签名。

when(jdbcTemplate.query(
    Mockito.anyString(), 
    Mockito.any(Object[].class), 
    Mockito.any(Mapper.class)
)).thenReturn(list);
when(jdbcTemplate.query(
    Mockito.anyString(), 
    Mockito.any(Object[].class), 
    ArgumentMatchers.<RowMapper<Mapper>>any())
)).thenReturn(list);

具体说来:

  • Mockito.anyString()与代码中的sqlQuery参数匹配
  • Mockito.any(Object[].class)与代码中的new Object[]{id,name}参数匹配
  • Mockito.any(Mapper.class)/ArgumentMatchers.<RowMapper<Mapper>>any()匹配代码中的new Mapper()参数

相关内容

  • 没有找到相关文章

最新更新