C# 使用shouldbeequivalento时,如何排除IEnumerable中所有项的属性?

C# 使用shouldbeequivalento时,如何排除IEnumerable中所有项的属性?,c#,unit-testing,fluent-assertions,C#,Unit Testing,Fluent Assertions,在NUnit/FluentAssertions测试中,我使用以下代码将从系统返回的复杂对象与引用对象进行比较: response.ShouldBeEquivalentTo(reference, o => o.Excluding(x => x.OrderStatus) .Excluding(x => x.Id)

在NUnit/FluentAssertions测试中,我使用以下代码将从系统返回的复杂对象与引用对象进行比较:

    response.ShouldBeEquivalentTo(reference, o => o.Excluding(x => x.OrderStatus)
                                               .Excluding(x => x.Id)
                                               .Excluding(x => x.Items[0].Name)
                                               .Excluding(x => x.Items[0].Article)
                                               .Excluding(x => x.ResponseStatus));
然而,这并不是我想要的。我想为
项目
列表中的每个对象排除
名称
文章
,而不仅仅是第0个对象。我如何实现这个场景


我看了一遍,没有找到解决办法。我遗漏了什么吗?

有一个超负荷的Excluding(),它提供了一个ISubjectInfo,可以用于更高级的选择条件。有了超负荷,你可以做如下事情:

subject.ShouldBeEquivalentTo(expected, config =>
                config.Excluding(ctx => ctx.PropertyPath == "Level.Level.Text"));

在我的示例中,我应该如何确切地使用PropertyPath?我试过PropertyPath==“Items.Name”和“Order.Items.Name”,但都不起作用。那么ctx.PropertyPath.EndsWith(“].Name”)| | ctx.PropertyPath.EndsWith(“].Article”)?很有效,谢谢。我想,如果我想匹配集合名称,我应该使用正则表达式。任何地方都有关于PropertyPath在各种情况下的具体外观的文档吗?它与您所期望的完全一样。例如,项[0]。名称。您还可以查看CodePlex上原始源代码中的等效规范。我们练习TDD,所以希望您可以将它们用作一种API文档。