我正在测试我的dao。我创建一个列表,将一个对象添加到列表中,并在调用方法时告诉mockito,以使用单个对象返回列表。但是,当我查看dao方法返回的内容时,它是一个空列表。我不确定我缺少什么。
@InjectMocks
private Dao dao;
@Mock
private JdbcTemplate jdbcTemp;
@Test
public void testGetData() {
List<MyObj> list = new ArrayList<>();
MyObj myObj = new MyObj();
myObj.setMethod("method val");
list.add(myobj);
Mockito.when(jdbcTemp.query(anyString(), Mockito.any(PreparedStatementSetter.class),
Mockito.any(Dao.MyRowMapper.class))).thenReturn(list);
List<MyObj> res = dao.getData(param1, param2); // this is empty, instead of having a value of 1
Assertions.assertThat(res).isNotNull();
}
我的班级:
public List<MyObj> getData(String arg1, String arg2) {
List<MyObj> list = new ArrayList<MyObj>();
try {
list.addAll(jdbcTemp.query(query, new PreparedStatementSetter() {
public void setValues(PreparedStatement pstmt) throws SQLException {
pstmt.setString(PARAM_ONE, arg1);
pstmt.setString(PARAM_TWO, arg2);
}
}, new MyRowMapper()));
} catch (Exception exp) {
}
return list;
}
答案 0 :(得分:1)
我在描述问题时确实犯了一个错误。
我的dao中有两个jdbcTemplates。
所以我解决的方法是在创建模拟jdbctemplate时使用@Qualifier("jdbcTemplate")