赛普拉斯测试断言对期望未定义的对象数组的过滤操作

cypress test asserting a filtering operation on array of objects expecting undefined

我对 API 进行了赛普拉斯测试。当我这样做时

cy.getUnits(u.email)

我期待在响应正文中出现与此类似的 200 OK 响应

{
  “units”: [
 {
      “store: “US_1234567890”,
      “role”: “user”,
      “email”: “user1@gmail.com”
    },
   {
     “store: “CA_865890X”,
      “role”: “admin”,
     “email”: “user1@gmail.com”
   }
  ]
}

我希望单位列表不包含下面的单位“u”

const u =    {
     “store: ” US_56890765",
      “role”: “admin”,
      “email”: “user1@gmail.com”
   }

所以在赛普拉斯,我做到了

cy.getUnits(u.email)
 .should(response => expect(response.status).to.equal(200))
 .its(‘body’)
 .should(units => {
  expect(units.length).to.equal(2)
  units.filter(
   unit =>
    unit.email === u.email &&
    unit.role === u.role &&
    unit.store === u.store,
  ).should.be.undefined
 })

那是行不通的

units.filter(
       unit =>
        unit.email === u.email &&
        unit.role === u.role &&
        unit.store === u.store,
      ).should.be.undefined

我尝试了不同的变体都无济于事。

有人可以帮我找到解决办法吗?

非常感谢您提供的任何帮助。

您想检查过滤后的数组长度

.should(units => {
  expect(units.length).to.equal(2)
  const filtered = units.filter(unit =>
    unit.email === u.email &&
    unit.role === u.role &&
    unit.store === u.store
  )
  expect(filtered).to.have.length(0)
})