如何遍历所有 body objects

How to iterate through the all the body objects

我想断言我的 response.body 是否不包含某些提供的值。 body 让我们假设 10 objects。所有 objects 都有“id”字段。如何在请求响应中使用某种 each 或 forEach?我知道我可以使用

expect(response.body[0].requestId).not.eq(value);
expect(response.body[1].requestId).not.eq(value);
expect(response.body[2].requestId).not.eq(value);
expect(response.body[3].requestId).not.eq(value);

但我不知道如何以更优化的方式对其进行编码。

我准备了数组:

    const bodyObjects = [
      'body[0]',
      'body[1]',
      'body[2]',
      'body[3]',
      'body[4]',
    ];
    

我的代码

it.only("Something "A" should not see something "B"", () => {
    const bodyObjects = [
      'body[0]',
      'body[1]',
      'body[2]',
      'body[3]',
      'body[4]',
    ];
    cy.request({
      method: "POST",
      url: Cypress.env("URL",
      auth: {
        bearer: token,
      },
      body: {
        id: someId,
      },
    }).then((response, $bodyObjects) => {
      responseId = response.body.id;
      expect(response.status).to.eq(201);
      **MY POTENTIAL ASSERTION**
    })
  });

您可以这样申请 forEach

it.only('Something "A" should not see something "B""', () => {
  const bodyObjects = ['body[0]', 'body[1]', 'body[2]', 'body[3]', 'body[4]']
  cy.request({
    method: 'POST',
    url: Cypress.env('URL'),
    auth: {
      bearer: token,
    },
    body: {
      id: someId,
    },
  }).then((response, $bodyObjects) => {
    responseId = response.body.id
    expect(response.status).to.eq(201)
    bodyObjects.forEach((bodyObject) => {
      expect(response[bodyObject].requestId).not.eq(value)
    })
  })
})

考虑到 response.body 是一个数组,您可以使用 forEach 循环来遍历它们:

responde.body.forEach(res => {
  expect(res.requestId).not.eq(value)
})