FluentAssertions 比较列表的内容而不是列表本身

Posted

技术标签:

【中文标题】FluentAssertions 比较列表的内容而不是列表本身【英文标题】:FluentAssertions comparing contents of lists instead of lists themselves 【发布时间】:2012-02-08 21:04:11 【问题描述】:

我有两个具有一堆属性的对象(同一类的实例),其中一些是其他对象的列表。

class A  
    public int a  get; set; 
    public string b  get; set; 
    public IList<C> cs  get; set; 

我想使用FluentAssertions library比较这些,并确保它们具有相同的属性,所以我添加

first.ShouldHave().AllProperties().EqualTo(second);

然后我得到一个错误

预期属性 c 的值为 但发现

换句话说,当比较列表的属性时,它会执行引用等于,这在这种情况下显然会失败。

我如何告诉 FluentAssertions 断言 列表中元素的属性是相等的,而不是列表本身?

【问题讨论】:

【参考方案1】:

从 1.7.0 版开始支持此功能。在此处阅读发行说明。 http://www.dennisdoomen.net/2012/01/fluent-assertions-170-has-been-released.html

【讨论】:

不幸的是,我目前无法升级 - 这必须首先通过我们开发团队的一系列决策。但是我必须升级才能获得该功能的事实回答了我的问题 =) 谢谢! 嗯,1.7.0 版本向后兼容 1.6.0,这就是我们使用语义版本控制的原因:-) 很高兴知道!这仍然不是我的决定,但说服项目经理会更容易=)

以上是关于FluentAssertions 比较列表的内容而不是列表本身的主要内容,如果未能解决你的问题,请参考以下文章

.Net FluentAssertions .Contains 不能正确比较对象

VS/xUnit/FluentAssertions:在测试消息中提供文件链接

FluentAssertions:如何在每对元素上使用自定义比较来比较两个集合?

FluentAssertions Should.Equal 在集合上,包含空值

FluentAssertions 对象图比较,包括 JSON 对象

Fluent Assertions 能否对 IEnumerable<string> 使用不区分字符串的比较?