1
我测试JdbcSpitterDao#getSpitterByid()
和我嘲笑jdbcTemplate.queryForObject()
为什么mockito的when()。thenReturn()不工作?
public class JdbcSpitterDao extends JdbcDaoSupport implements SpitterDao {
...
public Spitter getSpitterById(long id,
ParameterizedRowMapper<Spitter> parameterizedRowMapper) {
JdbcTemplate jdbcTemplate = getJdbcTemplate();
return jdbcTemplate.queryForObject(SQL_SELECT_SPITTER,
parameterizedRowMapper, id);
}
...
}
我的测试对象包含以下
ParameterizedRowMapper<Spitter> parameterizedRowMapper = new ParameterizedRowMapper<Spitter>() {
public Spitter mapRow(ResultSet rs, int rowNum) throws SQLException {
Spitter Spitter = new Spitter();
spitter.setId(rs.getLong(1));
spitter.setUsername(rs.getString(2));
spitter.setPassword(rs.getString(3));
spitter.setFullName(rs.getString(4));
spitter.setEmail(rs.getString(5));
return spitter;
}
};
JdbcTemplate jdbcTemplate = mock(JdbcTemplate.class);
JdbcSpitterDao jdbcSpitterDao = new JdbcSpitterDao();
jdbcSpitterDao.setJdbcTemplate(jdbcTemplate);
// Don't connect to the database. Mock JdbcTemplate class
when(
jdbcTemplate.queryForObject(
JdbcSpitterDao.SQL_SELECT_SPITTER,
parameterizedRowMapper, 1)).thenReturn(new Spitter(1, "rajkumarm", "rajmukarm",
"Rajkumar Masaniayan", "[email protected]"));
// Actual test
Spitter actualSpitter = jdbcSpitterDao.getSpitterById(1, parameterizedRowMapper);
但when().thenReturn()
成语是没有得到调用。该控件流向实际的jdbcTemplate
。貌似没有与
JdbcTemplate jdbcTemplate = mock(JdbcTemplate.class);
或
jdbcSpitterDao.setJdbcTemplate(jdbcTemplate);
问题请你让我知道了什么错误?
我不明白,一半的代码使用'JdbcSpitterDao',一半使用'JdbcTwitterDao'。这只是一个真正的持续错字,还是你有不同的类型?如果他们是不同的班级,那肯定会导致你看到的问题。 –
:-)。这是真正的持续错字。在Stackoverflow中手动更改名称类型 –
您是否在最后添加了一个断言来检查结果? – skaffman