我想要比较一个对象列表,忽略列表中对象的顺序,只比较对象中的一些属性,目前我使用以下代码来执行此比较:
actual.Should().NotBeNull();
actual.Count.Should().Be(expected.Count);
//compare ignoring order
foreach (var exp in expected)
actual.Should().Contain(act =>
act.IndividualId.Equals(exp.IndividualId)
&& act.Email.Equals(exp.Email)
&& act.FirstName.Equals(exp.FirstName)
&& act.LastName.Equals(exp.LastName)
);然而,这似乎不太理想,因为当出现故障时,您无法打印出预期值。是否有使用fluent断言执行此比较的内置机制?
发布于 2013-03-20 14:06:07
现在不行。我们确实有FA2.0的新equivalency assertion语法,但这也将验证对象是否以正确的顺序出现。对于FA 2.1,我试图支持这一点,但我还不确定这是否会起作用。这基本上意味着它必须将集合项后面的整个对象图与集合中每个其他项的对象图进行比较。当然,这将是相当缓慢的。
https://stackoverflow.com/questions/15513030
复制相似问题