Как смоделировать jdbcTemplate.query (sqlQuery, новый объект [] {id, name}, новый Mapper ()) - PullRequest
2 голосов
/ 09 апреля 2019

Мне нужно заполнить фиктивный список из 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<>);

1 Ответ

1 голос
/ 09 апреля 2019

Любое из следующих ложных объявлений будет скомпилировано и будет соответствовать подписи 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() в вашем коде
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...