【问题标题】:Cypress intercept nested array and object and asserts it valueCypress intercept nested array and object and asserts it value
【发布时间】:2022-12-02 02:09:05
【问题描述】:

I am trying to assert vallue's in a requestbody which I have intercepted with cypress.

The values I need to assert are"name": "NewName",and "title": "STUB1-Draft"you can see in the requestbody example that I have attached.

My testscript in Cypress:

 it.only('Check the requestbody', function () {
cy.intercept('PUT', '**/api/assessmenttest/**', req => {
            req.reply({ statusCode: 200 });
        }).as('NewSectionAndItem');

        cy.wait('@NewSectionAndItem')
            .its('request.body.test')
            .its('testParts')
            .its('testSections')
           .its('name')
            .should('include', 'NewName');
     //cy.wait('@NewSectionAndItem').its('request.body.testParts').expect(arr_obj[1].name).to.equal('NewName')
The request body look like the following:
{
  "structureStatistics": {
    "testPartCount": 1,
    "testSectionCount": 6,
    "itemCount": 23
  },
  "name": "BIMMA",
  "title": "OTAP",
  "correctionInstructionsUrl": "C:Stub/FakePath/For/Cypress",
  "correctionInstructionAppendices": [],
  "testParts": [
    {
      "testSections": [
        {
          "order": 1,
          "name": "Tekst 1 Looking for the one? ",
          "itemReferences": [
            {
              "itemId": "55eb5a28-24d8-4705-b465-8e1454f73ac8",
              "weight": 11,
              "neutralisationType": "NoNeutralisation",
              "itemSummary": {
                "id": "55eb5a28-24d8-4705-b465-8e1454f73ac8",
                "title": "H-E-T1-1"
              }
            }
          ],
          "id": "5c3eef2d-1094-4b9e-84c1-f184956f87fa"
        },
        {
          "id": "ffaebc93-0bf6-4f75-944a-f61345a7be90",
          "name": "NewName",
          "itemReferences": [
            {
              "itemId": "58a29037-c92c-48f6-a7c3-a2f94e288992",
              "weight": 0,
              "neutralisationType": "NoNeutralisation",
              "itemSummary": {
                "id": "58a29037-c92c-48f6-a7c3-a2f94e288992",
                "title": "STUB1-Draft",
                "state": "Draft"
              }
            }
          ]
        },
        {
          "order": 2,
          "name": "Tekst 2 The fruit Iron Ox bears",
          "itemReferences": [
            {
              "itemId": "abfc0811-26c7-4d9d-b3cc-0c920e5af259",
              "weight": 2,
              "neutralisationType": "NoNeutralisation",
              "itemSummary": {
                "id": "abfc0811-26c7-4d9d-b3cc-0c920e5af259",
                "title": "H-E-T2-2"
              }
            },
            {
              "itemId": "3cfda5e0-0d64-44ef-8a4d-21f37484c024",
              "weight": 12,
              "neutralisationType": "NoNeutralisation",
              "itemSummary": {
                "id": "3cfda5e0-0d64-44ef-8a4d-21f37484c024",
                "title": "H-E-T2-3"
              }
            },
            {
              "itemId": "19ba8a53-9755-4beb-8f69-edd107b80230",
              "weight": 1,
              "neutralisationType": "NoNeutralisation",
              "itemSummary": {
                "id": "19ba8a53-9755-4beb-8f69-edd107b80230",
                "title": "H-E-T2-4"
              }
            },
            {
              "itemId": "3f5b7b81-df1f-4f01-8165-cb2226d9044d",
              "weight": 1,
              "neutralisationType": "NoNeutralisation",
              "itemSummary": {
                "id": "3f5b7b81-df1f-4f01-8165-cb2226d9044d",
                "title": "H-E-T2-5"
              }
            }
          ],
          "id": "00f7455e-6d7d-4311-80cd-eff45c83ef2c"
        },
        {
          "order": 3,
          "name": "Tekst 3 How to live like a tramp",
          "itemReferences": [
            {
              "itemId": "7e2d568c-4cde-4500-9c6b-c09f246155e4",
              "weight": 1,
              "neutralisationType": "NoNeutralisation",
              "itemSummary": {
                "id": "7e2d568c-4cde-4500-9c6b-c09f246155e4",
                "title": "H-E-T3-6"
              }
            },
            {
              "itemId": "87a5bf1c-451a-40b8-802a-53ee842cafcd",
              "weight": 1,
              "neutralisationType": "NoNeutralisation",
              "itemSummary": {
                "id": "87a5bf1c-451a-40b8-802a-53ee842cafcd",
                "title": "H-E-T3-7"
              }
            }
          ],
          "id": "390ecc2e-6715-4898-aaea-158e790525a2"
        }

      ],
      "navigationMode": "Linear",
      "submissionMode": "Individual",
      "id": "a546a67c-ac39-4e81-bf03-beb482c920a0"
    }
  ],
  "metadataToBePublished": [
    "be63002c-dcf8-449f-a0ae-6ba50d4e2712",
    "4d70239e-7a6e-47c3-b157-462d6c8c5edc"
  ],
  "created": "2022-07-08T09:00:00+00:00",
  "modified": "2022-09-21T23:55:58.6532451+02:00",
  "createdBy": {
    "id": "a45ea6db-bf04-427d-9354-7081b7592a3d",
    "fullName": "Manual Construction"
  },
  "lastModifiedBy": {
    "id": "129a584c-a677-4d9f-b289-019d1815064f",
    "fullName": "OZKAN"
  },
  "id": "300eea01-ee10-4bd9-9356-8aaa933e949c"
}

I could not figure out how I can assert nested arrays and value's, without using deep.equal for the complete request. Thank you indeed!

【问题讨论】:

    标签: arrays nested cypress assertion


    【解决方案1】:

    You can use a cy-spok plugin to make a spok assertion to easily check a nested property.

    Example use

    const spok = require('cy-spok')
    // later in your test
    cy.wait('@NewSectionAndItem')
      .its('request.body')
      .should(spok({
        test: {
          testParts: {
            testSections: {
              name: 'NewName',
              title: 'STUB1-Draft'
            }
          }
        }
      });
    

    【讨论】:

      猜你喜欢
      • 2022-12-01
      • 1970-01-01
      • 2022-12-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-02
      • 2017-08-09
      • 2022-12-02
      • 2022-12-02
      相关资源
      最近更新 更多