You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cypress测试以Cypress.Promise开头时失败却显示通过的问题求助

Cypress测试用例以Cypress.Promise开头时,执行失败却显示通过的问题解决

问题原因

  • Cypress仅跟踪自身的命令队列(所有cy.开头的命令),当测试用例最外层直接使用Cypress.Promise时,这个Promise不属于Cypress的命令队列范畴。Cypress会在执行完Promise的初始化逻辑后,就判定测试用例执行完成并标记为通过,而then回调里的cy.get('x')执行失败的错误,会在测试状态已经被标记后才抛出,因此无法被Cypress捕获。
  • 第二个示例中,cy.request是Cypress原生命令,Cypress会等待该命令执行完成后再进入后续的then回调,此时回调内的所有代码(包括Cypress.Promise和cy.get)都会被Cypress跟踪,所以cy.get执行失败时能正确标记测试用例为失败。

解决方案

有两种可靠的修复方式:

  1. 沿用你第二个示例的写法,将Cypress.Promise放入Cypress命令的回调中,确保Cypress能跟踪后续命令的执行流程。
  2. 使用cy.wrap()包裹Cypress.Promise,将其纳入Cypress的命令队列,让Cypress等待整个Promise链执行完毕:
it('waiting for answer', () => {
  cy.wrap(new Cypress.Promise((resolve) => {
    resolve('ok')
  })).then((question) => {
    cy.get('x')
  })
})

内容的提问来源于stack exchange,提问作者huseyin tumer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 03:15:00