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

Jasmine测试中beforeAll未执行完成就提前运行test cases如何解决?

问题解决方案

测试用例早于beforeAll执行的核心原因是错误地为describe回调函数添加了async修饰符:Jasmine的describe仅用于组织测试套件,本身不支持异步回调,添加async后Jasmine不会等待套件内的钩子逻辑执行完成,就会直接调度测试用例运行。

具体修复步骤

  • 第一步:移除describe回调的async修饰符
  • 第二步:将全局超时配置从beforeAll中移到describe顶层,或者给beforeAll单独配置超时,避免超时配置生效时机晚于默认阈值触发意外超时
  • 第三步:如果需要针对单个钩子/用例设置独立超时,可在回调后追加超时时间参数,优先级高于全局配置

修改后的完整代码

describe('Testing : Protein superposition LOGIN', () => {
    // 超时配置移到describe顶层,也可以直接写到全局测试配置文件中
    jasmine.DEFAULT_TIMEOUT_INTERVAL = 3500000;

    beforeAll(async function () {
        await browser.get(loginData.URL);
        await browser.refresh();
        await browser.waitForAngularEnabled(true);
        await page.funcLogin(loginData.VALID.USERNAME, loginData.VALID.PASSWORD);
        await browser.waitForAngularEnabled(false);
        expect(await userLoginStatus.isPresent()).toBe(true);
        console.log('LOGIN Status : Ok');
    // 也可以单独给beforeAll设置超时,不需要改全局配置,二选一即可
    // }, 3500000);
    });

    it('Check Login', async function () {
        try {
            var temp = await alerts.getPageHeaderName();
            console.log("Temp Detail", temp);
            // 剩余测试逻辑
        } catch (e) {
            throw new Error(e);
        }
    })
});

验证方式

修改完成后运行测试,控制台会先输出LOGIN Status : Ok,之后才会输出Temp Detail相关日志,说明执行顺序符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 13:45:02