【发布时间】:2021-12-18 16:04:31
【问题描述】:
我正在使用 FluentAssertions 来比较映射后对象的等效性:
x.Should().BeEquivalentTo(y);
x 有一个与 y 命名略有不同的属性并不少见,在这种情况下,能够告诉 FluentAssertions 这两个属性的值应该匹配会很棒.理想情况下是这样的:
(y => y.PropertyWithName, x.PropertyWithVerySimilarName)
我正在阅读文档,但看不到明确的方法。有没有人找到办法? https://fluentassertions.com/objectgraphs/
【问题讨论】:
-
x.PropertyWithVerySimilarName.Should().Be(y.PropertyName)?我不明白。你能发布一个更具体的例子或minimal reproducible example吗? -
假设类 X 有一个属性“StudentCourseName”,而类 Y 有一个属性“StudentCourseTitle”,比较两个对象的等价性会失败,因为属性有不同的名称,所以 FluentAssertions 不能自动比较等价性。假设我想告诉 FluentAssertions 应该检查这些属性的等价性,是否有内置的方法可以做到这一点?
-
嗯,首先,如果您有两个包含不同属性的对象,那么您就有了两种完全不同的数据类型。除非您制作自定义相等比较器,否则它们将永远不会被视为相等。其次,Fluent Assertions 中的任何内容,基本上任何其他库中的任何内容都不会对属性名称进行“足够接近”的测试。它们要么完全匹配,要么不匹配。
-
但是使用 FluentAssertions 来比较两种完全不同的数据类型是很常见的吗?这里的第一个示例是这样做的:fluentassertions.com/objectgraphs
-
当然,因此我们假设您有一种简单的方法可以在选项中指定特定的比较。
标签: c# fluent-assertions