c# - 流利的断言应该大于总是通过
问题描述
我正在尝试使用以下方法测试我的收藏:
var costByFactoryt = dataAccess.GetcostPerFactoryt(null, null);
costByFactoryt.Count().Should().BeGreaterThan(0);
costByFactoryt.Select(x => x.Cost.Should().BeGreaterThan(100));
但问题是,如果我将最后一行代码更改为,
costByFactoryt.Select(x => x.Cost.Should().BeGreaterThan(1000));
或者
costingByCircuit.Select(x => x.Cost.Should().BeLessThan(100));
它仍然通过,这是错误的。
我要测试的是,所有成本都应该大于 100。
解决方案
那么写作的问题costByFactoryt.Select(x => x.Cost.Should().BeGreaterThan(100));
是它什么都不测试。它创建了一个惰性 LINQ 表达式,它永远不会被迭代,即没有一个BeGreaterThan
被调用。
使用 Fluent Assertions 时,您将获得避免使用的最详细的失败消息,Select
因为更多信息随后可用于失败消息生成器。
什么时候
costByFactoryt.Select(x => x.Cost).Should().OnlyContain(x => x > 100)
失败,消息生成器将输出Cost
对象。
改为写
costByFactoryt.Should().OnlyContain(x => x.Cost > 100)
失败消息将包含所有x
对象。
推荐阅读
- mongodb - mac:找不到命令:mongod
- python - Keras 迁移学习
- android - Android Studio布局按子文件夹排序不起作用
- angular - 升级后相同安装的 Angular Material 版本不同
- kotlin - JOOQ:通过记录更新时如何添加返回子句
- sql - 如何优化 sql where = (select from same_table)
- pandas - 如何提取具有多于几列的值的数据帧的行
- php - 在 SMS 中,是否有一个链接可以打开带有特定号码的拨号盘?怎么做?
- scala - varargs 选项的 scala 惰性 zip 到元组选项
- java - 子类编辑声明的抽象类classmember