You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用FluentAssertions按结构相等判断集合子集包含关系

问题解答

FluentAssertions 已经内置了符合你要求的集合子集等效校验方法,无需自定义SubsetBeEquivalentTo扩展。你可以直接使用BeSubsetOf方法,该方法默认采用和BeEquivalentTo完全一致的结构相等性比较规则。

对应你的测试场景,代码可以直接改写为:

var p1 = new Point(1,2);
var p1_1 = new Point(1,2);
var p2 = new Point(2,3);
var p3 = new Point(4,5);

var A = new [] { p1 };
var B = new [] { p2, p1_1};
var C = new [] { p2, p3};

// 断言通过:A的所有元素都能在B中找到结构等效的项
A.Should().BeSubsetOf(B);
// 断言失败:C中不存在和p1结构等效的项
A.Should().BeSubsetOf(C);

如果需要自定义比较规则,比如忽略特定成员、自定义值匹配逻辑,也可以和BeEquivalentTo一样传入配置委托,示例如下:

// 示例:比较时忽略Point的X属性
A.Should().BeSubsetOf(B, opt => opt.Excluding(p => p.X));

内容的提问来源于stack exchange,提问作者Gabriel Guillermo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 01:18:02