FluentAssertions等效比较时IMemberInfo无Name属性问题咨询
你遇到的是FluentAssertions 6.x版本的API破坏性变更导致的问题,既不是文档笔误,也不需要导入额外命名空间:
- 5.x及更早版本的
IMemberInfo接口直接暴露Name属性,公开示例多基于该版本编写 - 6.x版本重构了等效性比较相关的API,原
Name属性被移动到IMemberInfo.SelectedMemberInfo属性下
你可以根据需求选择两种解决方式:
- 精准匹配当前层级的成员名称,不受嵌套层级影响:
orderDto.Should().BeEquivalentTo(order, options => options .Using<DateTime>(ctx => ctx.Subject.Should().BeCloseTo(ctx.Expectation, 1.Seconds())) .When(info => info.SelectedMemberInfo.Name == "Date"));
- 匹配完整成员路径(适合嵌套对象字段筛选场景),直接使用
Path属性:
// 根层级Date字段直接写"Date",嵌套字段需要写全路径,例如"Order.CreateDate" orderDto.Should().BeEquivalentTo(order, options => options .Using<DateTime>(ctx => ctx.Subject.Should().BeCloseTo(ctx.Expectation, 1.Seconds())) .When(info => info.Path == "Date"));
内容的提问来源于stack exchange,提问作者GKalnytskyi
相关产品推荐
相关产品推荐

