测试从db检索的(大)集合

时间:2010-05-06 09:25:52

标签: database linq-to-sql collections list integration-testing

我目前正在对数据库进行集成测试,我有以下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。我知道只测试列表的第一项是无效的测试,作为解决方案,我可以遍历列表并检查完成的所有项目,但将逻辑放入测试有点违背写“好”的概念测试

所以我的问题是:
有没有人能够很好地解决如何正确测试此列表的结果的问题?

1 个答案:

答案 0 :(得分:0)

您可以反过来检查 完成的日期范围内是否有任何结果。

如果有,那么你的测试应该失败。

我无法测试任何更高级的代码,所以我会给你一个简单的方法:

int noOfResultsFinished = datacontext.Repository<IObject>()
      .Where(r => r.DateTime > date && r.Finished).Count();

if (noOfResultsFinished > 0)
{
     // fail test
}