Fluent Assertions最新版泛型对象等效比较如何排除指定参数
解决方案
在Fluent Assertions最新稳定版(6.x+)中,被标记为过时的SelectedMemberPath可以直接用Path属性平替,二者返回值逻辑完全一致:都是从根比对对象出发、到当前被校验成员的点分隔属性路径字符串,不需要调整你原有的前缀、后缀匹配规则。
如果你的比对逻辑涉及集合/数组元素,需要把索引位置也纳入路径匹配规则,可以使用同场景属性PathAndIndex,会返回类似Order.Items[2].CreateTime带索引的完整路径。
替换后的方法实现如下:
private static bool IsEquivalentTo(object request, object expectedRequest) { request.Should().BeEquivalentTo(expectedRequest, config => config .Excluding(c => c.Path.EndsWith("Id")) .Excluding(c => c.Path.EndsWith("Date")) .Excluding(c => c.Path.EndsWith("Equipment")) .Excluding(c => c.Path.EndsWith("Partners")) .Excluding(c => c.Path.StartsWith("Warranty")) ); return true; }
补充说明:如果你的排除规则不需要匹配嵌套属性,仅需要按当前成员的名称筛选,可以直接使用
c.Name属性匹配,性能会比全路径匹配略高,但你当前的跨实体通用排除规则用Path是100%兼容原有逻辑的,不需要额外调整。
内容的提问来源于stack exchange,提问作者Adrià Arquimbau
相关产品推荐
相关产品推荐

