FluentAssertions 等效比较行为和 IMemberInfo
FluentAssertions Equivalency Comparison Behavior and IMemberInfo
我正在使用 FluentAssertions (v6.2.0) 来测试 API 的 return table 类数据。我想更改其中一个字段的比较行为,并尝试使用 documentation.
中描述的方法
orderDto.Should().BeEquivalentTo(order, options => options
.Using<DateTime>(ctx => ctx.Subject.Should().BeCloseTo(ctx.Expectation, 1.Seconds()))
.When(info => info.Name == "Date"));
问题是 When
扩展方法期望的 IMemberInfo
class 没有 Name
属性,它有 属性 称为 Path
。 Name
是否已被 Path
替换,这是文档中的错字,还是我需要导入另一个名称空间才能使用 Name
属性?
通过快速查看 FluentAssertions source code,我发现 info
参数是 IObjectInfo
类型并且它有一个 Path
属性.使用此代码的快速测试显示 Path
属性 按您预期的方式工作:
void Main()
{
var orderDto = new OrderDto { Date = DateTime.Now };
var order = new Order { Date = DateTime.Now };
//var order = new Order { Date = DateTime.Now.Subtract(TimeSpan.FromSeconds(2)) };
orderDto.Should().BeEquivalentTo(order, options => options
.Using<DateTime>(ctx => ctx.Subject.Should().BeCloseTo(ctx.Expectation, 1.Seconds()))
.When(info => info.Path == "Date"));
}
class OrderDto {
public DateTime Date { get; set; }
}
class Order
{
public DateTime Date { get; set; }
}
事实上,该代码的 FluentAssertions 测试也使用了路径。参见 https://github.com/fluentassertions/fluentassertions/blob/master/Tests/FluentAssertions.Specs/Equivalency/ExtensibilityRelatedEquivalencySpecs.cs#L394
还有一个具有 Name
和 Path
属性的 IMethodInfo
接口。但是,Include*
和 Exclude*
方法使用了它。
所以这似乎是一个文档错误。
我正在使用 FluentAssertions (v6.2.0) 来测试 API 的 return table 类数据。我想更改其中一个字段的比较行为,并尝试使用 documentation.
中描述的方法orderDto.Should().BeEquivalentTo(order, options => options
.Using<DateTime>(ctx => ctx.Subject.Should().BeCloseTo(ctx.Expectation, 1.Seconds()))
.When(info => info.Name == "Date"));
问题是 When
扩展方法期望的 IMemberInfo
class 没有 Name
属性,它有 属性 称为 Path
。 Name
是否已被 Path
替换,这是文档中的错字,还是我需要导入另一个名称空间才能使用 Name
属性?
通过快速查看 FluentAssertions source code,我发现 info
参数是 IObjectInfo
类型并且它有一个 Path
属性.使用此代码的快速测试显示 Path
属性 按您预期的方式工作:
void Main()
{
var orderDto = new OrderDto { Date = DateTime.Now };
var order = new Order { Date = DateTime.Now };
//var order = new Order { Date = DateTime.Now.Subtract(TimeSpan.FromSeconds(2)) };
orderDto.Should().BeEquivalentTo(order, options => options
.Using<DateTime>(ctx => ctx.Subject.Should().BeCloseTo(ctx.Expectation, 1.Seconds()))
.When(info => info.Path == "Date"));
}
class OrderDto {
public DateTime Date { get; set; }
}
class Order
{
public DateTime Date { get; set; }
}
事实上,该代码的 FluentAssertions 测试也使用了路径。参见 https://github.com/fluentassertions/fluentassertions/blob/master/Tests/FluentAssertions.Specs/Equivalency/ExtensibilityRelatedEquivalencySpecs.cs#L394
还有一个具有 Name
和 Path
属性的 IMethodInfo
接口。但是,Include*
和 Exclude*
方法使用了它。
所以这似乎是一个文档错误。