Имитирующий результирующий набор приводит к исключению нулевого указателя

#java #mockito #resultset

#java #mockito #результирующий набор

Вопрос:

У меня есть простой метод для тестирования. Я протестировал все мои другие методы, которые возвращают пользовательский объект, и они работают нормально.

 
@Autowired Dao dao;

public ResultSetList getResultSetList(String f, String t) {
    ResultSetList res = dao.getResultst(f, t);
    return res;
}

@Mock
private ResultSet rs;

@Test
public void testGetResultSetList() {
    ResultSetList rsl = new ResultSetList(rs, 0, 0, true); // npe here

    Mockito.when(dao.getResults(any(), any())).thenReturn(rsl);

    ResultSetList rsFinal = service.getResultSetList("", "");

    Assertions.assertThat(rsFinal).isNotNull();
}
  

Комментарии:

1. Вы не показываете никакого кода, который был бы инициализирован rs .

2. Разве @Mock не инициализировал бы его?

3. Аннотации не являются волшебными. Есть ли у вас какое-то дополнительное правило, прикрепленное к этому классу, которое бы его инициализировало? (Именно для такого рода вещей я лично предпочитаю отключать магию и просто использовать mock(ResultSet.class) .)

4. Я думал, что эти две вещи делают одно и то же? Использование Mockito.mock(ResultSet.class) у меня не сработало.

5. Есть ли обходной путь, чтобы я мог просто инициализировать ResultSetList? Потому что это действительно то, что я хочу сделать в конце дня.