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

如何使用Cypress校验对象数组中属性值是否等于指定值?

错误原因

你混用了两种不同的断言体系:

  • expect()是Chai断言库的原生方法,仅支持to.equal、to.eql这类Chai自带的断言链语法,没有.should属性,因此调用后会抛出无效属性报错。
  • .should()是Cypress为自身链式命令(如cy.get()、cy.request()等)封装的专属断言调用方法,不能接在Chai的expect()方法后使用。
  • 额外注意:你示例中接口返回的value是字符串类型,expectedValue是数字类型,若使用严格相等断言,需要先统一两者类型,否则即使数值一致也会断言失败。
正确校验写法

写法1:在then回调中使用Chai原生断言

直接替换断言语法即可:

it('some test' , () => {
  const expectedValue = '200'; // 与返回的value类型保持一致,均为字符串
  cy.apiGetObject(id).then((arr_obj) => {
      // Chai原生断言语法,不要使用.should
      expect(arr_obj[0].value).to.equal(expectedValue);
  })
})

如果需要忽略类型仅校验值相等,可以使用.to.eql:

expect(arr_obj[0].value).to.eql(expectedValue); // 字符串'200'和数字200会判定为相等

写法2:使用Cypress链式断言(更简洁)

利用Cypress自带的its()命令直接提取嵌套属性,直接接.should()做断言,不需要额外写then回调:

it('some test' , () => {
  const expectedValue = '200';
  cy.apiGetObject(id)
    .its('0.value') // 直接提取数组第0项的value属性
    .should('eq', expectedValue);
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 01:57:07