Fluent assertion 应该大于 always pass
Fluent assertion should be greater than always pass
我正在尝试使用 :
测试我的 collection
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。
那样根本行不通,因为 LINQ Select 不会迭代集合 => 你的测试代码没有被执行
根据Fluent Assertions documentation
正确的语法应该是
costingByCircuit.Select(x => x.Cost).Should().OnlyContain(x => x > 100);
然后写 costByFactoryt.Select(x => x.Cost.Should().BeGreaterThan(100));
的问题是它什么都不测试。
它创建一个惰性 LINQ 表达式,它从不迭代,即 BeGreaterThan
中的 none 被调用。
使用 Fluent Assertions 时,您将获得最详细的失败消息,而您避免使用 Select
,因为更多信息随后可用于失败消息生成器。
何时
costByFactoryt.Select(x => x.Cost).Should().OnlyContain(x => x > 100)
失败,消息生成器将输出Cost
个对象。
改为写
costByFactoryt.Should().OnlyContain(x => x.Cost > 100)
失败消息将改为包含所有 x
个对象。
我正在尝试使用 :
测试我的 collection 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。
那样根本行不通,因为 LINQ Select 不会迭代集合 => 你的测试代码没有被执行
根据Fluent Assertions documentation
正确的语法应该是
costingByCircuit.Select(x => x.Cost).Should().OnlyContain(x => x > 100);
然后写 costByFactoryt.Select(x => x.Cost.Should().BeGreaterThan(100));
的问题是它什么都不测试。
它创建一个惰性 LINQ 表达式,它从不迭代,即 BeGreaterThan
中的 none 被调用。
使用 Fluent Assertions 时,您将获得最详细的失败消息,而您避免使用 Select
,因为更多信息随后可用于失败消息生成器。
何时
costByFactoryt.Select(x => x.Cost).Should().OnlyContain(x => x > 100)
失败,消息生成器将输出Cost
个对象。
改为写
costByFactoryt.Should().OnlyContain(x => x.Cost > 100)
失败消息将改为包含所有 x
个对象。