【问题标题】:Using Cypress 6.4 wait for interception but skip first canceled xhr call使用 Cypress 6.4 等待拦截但跳过第一个取消的 xhr 调用
【发布时间】:2021-05-24 21:19:05
【问题描述】:

我使用拦截来等待 XHR 调用,并确保加载它的应用网格开始执行我的测试:

cy.visit('/contacts')
cy.intercept('POST', '**/contacts/datatable').as('getContacts')
cy.wait('@getContacts')
cy.log('now I can start...')

问题是我的 api 出现了一些问题,我首先得到一个取消的 XHR,然后是一个 200 状态,响应正确,cypress 卡在 cy.wait 中。

我尝试添加某种条件,例如:

cy.wait('@getContacts')
  .should('have.property','response.statusCode',200)
  .then(cy.log('now I can start...'))

但还是一样。

有什么想法可以跳过 XHR 调用,直到响应为 200 ?

【问题讨论】:

  • 在拨打cy.visit之前先拨打cy.intercept。据我所知,您的浏览器可能会在 API 被模拟之前尝试访问该链接。
  • 你试过failOnStatusCode吗?我想它会解决你的问题:见文档docs.cypress.io/api/commands/request.html#Arguments

标签: xmlhttprequest cypress intercept


【解决方案1】:

尝试用 should() 链式等待。即:

cy.wait('@getContacts').its('response.statusCode').should('eq', 200).

根据 cypress 文档,cy.wait 会一直等到状态码为 200。

【讨论】:

  • 感谢您的回答,这是正确的,但问题是指向状态为(已取消)的第一个请求,并且当对同一地址的第二个请求返回 200 并且正确的数据柏树忽略它。所以即使我可以看到网格中的数据,我也会在 cy.wait 中遇到错误,并且测试的执行会停止
  • 仅供参考,你们可以直接在 cypress 频道提问 -> discord.gg/5X52D2gq
猜你喜欢
  • 2022-09-28
  • 2023-04-02
  • 1970-01-01
  • 2022-09-10
  • 1970-01-01
  • 1970-01-01
  • 2022-11-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多