使用 cypress 测试网络请求

Testing the Network request with cypress

我想测试网络请求并使用 Cypress 断言请求的数据。

cy.intercept('POST', '*service=jobsSearch*').as('ajaxRequest')

cy.get(selectors.dataComponent('jobs')).find('button').click()

cy.wait('@ajaxRequest')

cy.get('@ajaxRequest').its('request.body').should('contain', 'jobApprenticeshipType=stelle')

cy.get('@ajaxRequest').its('results.body').should('contain', 'mailAlertSearchTerm=Handwerk & Produktion')

我可以到达 'request.body' 并断言 'jobApprenticeshipType=stelle'。但是,我无法到达 results.body 断言 'mailAlertSearchTerm=Handwerk & Produktion'。这是结果的屏幕截图:

响应的键是 response 而不是 results。我 猜测 你的回复看起来像...

{
  "results": {
    ...
    "mailAlertSearchTerm": "foo"
    ...
  }
}

在这种情况下,您希望通过这样的方式引用它:

cy.get('@ajaxRequest')
  .its('response.body')
  .should('contain', 'mailAlertSearchTerm=Handwerk & Produktion')
// or, more specifically using the JSON properties
cy.get('@ajaxRequest')
  .its('response.body.results.mailAlertSearchTerm')
  .should('contains', 'Handwerk & Produktion');
  })

如果你只是截取并记录整个事情,你可以看到这个。

cy.wait('@ajaxRequest')
  .get('@ajaxRequest')
  .then((data) => cy.log(data))