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

如何用chai-sorted对复杂对象数组的二级属性做排序校验?

解决chai-sorted校验复杂对象二级属性排序的问题

嘿,我之前也踩过这个坑!chai-sorted 默认对一级属性的校验很顺畅,但要搞定嵌套的二级属性排序,其实用它的自定义属性提取函数就能轻松解决,比硬凑点语法靠谱多了(还能避开版本兼容性问题)。

具体实现步骤

先假设你有这样的测试数据——一组带嵌套对象的数组:

const testData = [
  { product: { price: 50 } },
  { product: { price: 80 } },
  { product: { price: 120 } }
];

方法1:自定义提取函数(推荐)

直接给sortedBy传一个函数,返回你要校验的二级属性值就行:

// 校验数组按二级属性升序排列
expect(testData).to.be.sortedBy(item => item.product.price);

// 如果要校验降序,加上descending配置项
expect(testData).to.be.sortedBy(item => item.product.price, { descending: true });

方法2:点语法(部分版本支持)

如果你的chai-sorted是较新版本,也可以直接用点路径访问嵌套属性,写法更简洁:

expect(testData).to.be.sortedBy('product.price');

要是这个写法触发错误,基本就是版本不支持嵌套路径,换回方法1就好。

常见错误排查

要是还是报错,先检查这几点:

  • 确认数组里每个元素都存在对应的二级属性,避免undefined打乱排序逻辑
  • 升级chai-sorted到最新版(执行npm update chai-sorted),老版本对嵌套属性的支持有限
  • 核对你的断言逻辑和实际数据的排序方向(升序/降序)是否一致

这样就能顺利完成二级属性的排序校验啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:25:54