#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? Потому что это действительно то, что я хочу сделать в конце дня.