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
相关产品推荐
相关产品推荐

