我正在为一些遗留代码编写单元测试。我有这样的方法
public Map<String, List<NotificationKeyBasic>> getDueBusinessCaseList(int numberOfDays) {
String sql = "select bh.hotelid from dbo.BUSCASEHOTELMASTER bh\n" +
"where (select bh.closedate - trunc(sysdate) diff from dual) = ?\n";
return jdbcTemplate.query(sql, new ResultSetExtractor<Map<String, List<NotificationKeyBasic>>>() {
@Override
public Map<String, List<NotificationKeyBasic>> extractData(ResultSet rs) throws SQLException, DataAccessException {
Map<String, List<NotificationKeyBasic>> mapStringKey = new HashMap<String, List<NotificationKeyBasic>>();
List<NotificationKeyBasic> notificationKeys;
while (rs.next()) {
//do stuff here
}
return mapStringKey;
}
}, numberOfDays);
}
}
此方法运行时ResultSet为空。我们使用内存HSQL数据库进行测试。我有一个xml数据集文件,其中包含此内容
<dataset>
<dbo.buscasehotelmaster closedate="2012-04-04" hotelid="44" />
</dataset>
所有测试代码都应该正常工作。我遇到的问题是,当我传入numberOfDays
作为query()
的参数时,ResultSet为空。但是,当我将两个日期之间的差异硬编码为-1007时,(截断(sysdate)是截至今天的1/6/2015,因此两个日期之间的差异为-1007)它起作用且ResultSet不为空。我不确定为什么会这样,并且更改现有代码不是一种选择。任何见解将不胜感激。感谢