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

Cypress是否有接收criteria回调、返回真值即通过的.should()断言

Cypress是否支持传入自定义回调的.should()断言

答案是肯定的,你设想的简化写法完全可以直接运行。

  • Cypress的断言体系基于Chai构建,你提到的satisfy是Chai原生提供的BDD断言,作用就是校验目标值是否满足传入回调的判定规则,即当回调返回真值时判定断言通过,完全匹配你的需求。
  • 你不需要手动包裹assert,直接使用如下写法即可:
const isXmlTag = (tagStr: string) =>
  tagStr.startsWith('<') &&
  tagStr.endsWith('>') &&
  getCharacterUseCountInString(tagStr, '<') === 1 &&
  getCharacterUseCountInString(tagStr, '>') === 1

cy.get('.xml-tag')
  .invoke('text')
  .should('satisfy', isXmlTag)
  • 该写法和Cypress所有内置断言行为一致:会自动触发重试机制直到断言通过或命令超时,断言失败时会输出标准化的错误信息。
  • 如果你需要自定义失败提示,也可以直接向.should()传入校验回调,在回调内抛出错误即可,这种写法同样支持自动重试:
cy.get('.xml-tag')
  .invoke('text')
  .should(text => {
    if (!isXmlTag(text)) {
      throw new Error(`获取到的文本"${text}"不符合XML标签格式要求`)
    }
  })

你之前使用的.should(text => assert(isXmlTag(text)))写法虽然功能可用,但相比上述两种写法冗余度更高,也不方便自定义错误提示。

内容的提问来源于stack exchange,提问作者Michal Kurz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 08:31:21