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

如何在Ensure断言失败时执行二次断言?(用户邮箱校验场景)

实现断言失败后的二次校验逻辑(邮箱未占用校验场景)

问题背景

在用户列表页面添加新用户时,需要验证输入的邮箱未被占用。原本的校验逻辑是检查"邮箱已占用"的提示弹窗不存在:

checkMailIsNotUsed: () =>
    Task.where('#actor checks mail present message is absent',
    Ensure.that(UsersList.messageArea, not(isVisible()))),

但实际场景中存在例外:提示区域可能显示其他无关错误(比如格式错误),此时虽然提示可见,但邮箱并未被占用。需要实现"第一个断言失败时,再执行第二个断言"的逻辑——即提示区域可见时,检查文本里不包含already exists,而不是直接终止流程。

解决办法

用try-catch包裹第一个断言,捕获断言失败的异常后执行二次校验,代码示例如下:

checkMailIsNotUsed: () =>
    Task.where('#actor checks mail is not used', () => {
        try {
            // 优先校验:提示区域不可见(无任何提示)
            Ensure.that(UsersList.messageArea, not(isVisible()));
        } catch () {
            // 第一个断言失败时,校验提示文本不是邮箱已占用的错误
            Ensure.that(Text.of(UsersList.messageArea), not(includes('already exists')));
        }
    }),

逻辑解释

  1. 正常流程:如果提示区域不可见,直接通过校验,确认邮箱未被占用。
  2. 异常分支:如果提示区域可见(第一个断言失败),则检查提示内容是否不包含already exists——如果包含则抛出错误(说明邮箱确实已占用),如果不包含则校验通过(说明是其他无关提示,邮箱可用)。

这样就覆盖了所有合法场景,不会因为无关提示误判邮箱状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 17:01:21