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

如何使用Supertest检查数组是否包含指定的预期值?

场景1:要求数组元素、顺序、长度完全匹配预期

直接用深度相等断言即可:

const expectedArray = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
// 校验类型+完全匹配
array.should.be.an.Array().and.deep.equal(expectedArray)

这种写法校验逻辑最严格,只要元素、顺序、长度有任意一项不符合就会断言失败,适合接口返回固定顺序数组的场景。

场景2:不要求元素顺序,仅要求数组包含所有预期值

如果允许数组元素乱序,只要求所有预期值都存在:

const expectedValues = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
// 校验类型+包含所有预期值(允许存在额外值、顺序任意)
array.should.be.an.Array().and.include.members(expectedValues)

如果要再加限制:不允许存在额外值,只允许顺序不同,补充长度校验即可:

const expectedValues = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
array.should.be.an.Array()
  .with.lengthOf(expectedValues.length)
  .and.include.members(expectedValues)

错误原因说明

你之前的写法失效是因为have.properties是用于校验对象的键名,而数组的键是数字索引,不是元素本身,自然无法匹配到你传入的字符串元素值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:06:05