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

Angular集成Selenium Edge测试执行成功却显示0通过,断言被忽略

问题排查与解决方案

一、Mocha显示“0 passing (1ms)”的原因与修复

1. 测试文件未被Mocha识别

  • 检查测试文件命名/路径是否符合Mocha规则:默认识别test/目录下含spec/test关键字的.js/.ts文件,若文件在非默认目录,需在package.json的test脚本中指定路径,示例:
    "scripts": {
      "test": "mocha ./e2e-tests/**/*.spec.js"
    }
    
  • 确保断言被包裹在describe/it块内:Mocha仅识别it块内的测试逻辑,若断言写在块外会被忽略。正确写法示例:
    describe('Angular App E2E Test', () => {
      let driver;
      before(async () => {
        const edgeOptions = new EdgeOptions();
        driver = await new Builder().forBrowser('MicrosoftEdge').setEdgeOptions(edgeOptions).build();
      });
    
      it('should load app with expected title', async () => {
        await driver.get('http://localhost:4200');
        const title = await driver.getTitle();
        assert.equal(title, 'Your Angular App Title');
      });
    
      after(async () => {
        await driver.quit();
      });
    });
    

2. 异步代码未正确处理

  • Selenium操作均为异步,必须确保it/before/after块使用async/await或返回Promise。若未标记async,Mocha会认为测试同步完成,不会等待异步断言执行,直接判定无测试通过。

二、出现Chrome相关日志的原因与修复

  • Selenium 4+底层逻辑会扫描系统内的驱动文件,即使指定Edge,也可能因默认配置尝试查找ChromeDriver。修复方式:
    1. 明确指定Edge驱动路径,避免自动查找:
      const edgeDriverPath = require('path').resolve(__dirname, './msedgedriver'); // 你的驱动本地路径
      const driver = await new Builder()
        .forBrowser('MicrosoftEdge')
        .setEdgeOptions(new EdgeOptions())
        .usingDriverServer(new URL(`http://localhost:9515`))
        .build();
      
    2. 检查package.json是否误安装chromedriver依赖,或其他测试脚本是否引用Chrome配置,导致日志出现Chrome相关提示。
    3. 严格使用EdgeOptions配置,不要混用ChromeOptions的属性。

三、额外验证步骤

  • 运行测试时添加--verbose参数查看详细日志,确认测试文件是否被加载:
    npm test -- --verbose
    
  • 单独运行msedgedriver命令,确认驱动服务正常启动(输出Starting Microsoft Edge WebDriver on port 9515类日志)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 03:11:12