【问题标题】:Testing a (big) collection retrieved from a db测试从数据库中检索到的(大)集合
【发布时间】:2010-05-06 09:25:52
【问题描述】:

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

所以我的问题是:
有没有人对如何正确测试这个列表的结果有很好的解决方案?

【问题讨论】:

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


    【解决方案1】:

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

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

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

    int noOfResultsFinished = datacontext.Repository<IObject>()
          .Where(r => r.DateTime > date && r.Finished).Count();
    
    if (noOfResultsFinished > 0)
    {
         // fail test
    }
    

    【讨论】:

    • 感谢您的启发!为什么我没有想到:P
    • 因为没有人一直在他身边的灵感:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    • 2019-06-04
    • 1970-01-01
    • 2022-08-03
    • 2020-01-25
    • 1970-01-01
    相关资源
    最近更新 更多