我目前正在对数据库进行集成测试,我有以下sql语句:
var date = DateTime.Parse("01-01-2010 20:30:00");
var result = datacontext.Repository<IObject>().Where(r => r.DateTime > date).First();
Assert.IsFalse(result.Finished);
我需要测试从语句中检索的结果,其中给定日期小于对象的日期,将Finished设置为False。我不知道我得到了多少结果,目前我正在获取列表的第一个对象,并检查该对象是否已将Finished设置为false。我知道只测试列表的第一项是无效的测试,作为解决方案,我可以遍历列表并检查完成的所有项目,但将逻辑放入测试有点违背写“好”的概念测试
所以我的问题是:
有没有人能够很好地解决如何正确测试此列表的结果的问题?
答案 0 :(得分:0)
您可以反过来检查 完成的日期范围内是否有任何结果。
如果有,那么你的测试应该失败。
我无法测试任何更高级的代码,所以我会给你一个简单的方法:
int noOfResultsFinished = datacontext.Repository<IObject>()
.Where(r => r.DateTime > date && r.Finished).Count();
if (noOfResultsFinished > 0)
{
// fail test
}