当使用ShouldBeEquivalentTo时,我如何排除IEnumerable中所有项的属性?

本文关键字:IEnumerable 属性 排除 ShouldBeEquivalentTo 何排除 | 更新日期: 2023-09-27 18:03:25

在我的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));

然而,这并不是我想要的。我想排除NameArticle每个对象在Items列表,而不仅仅是第0。如何实现这个场景?

我已经通读了文档,但没有找到解决方案。我错过什么了吗?

当使用ShouldBeEquivalentTo时,我如何排除IEnumerable中所有项的属性?

有一个exclude()的重载,它提供了一个issubjectinfo,您可以将其用于更高级的选择标准。有了这个重载,你可以这样做:

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