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。修复方式:
- 明确指定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(); - 检查
package.json是否误安装chromedriver依赖,或其他测试脚本是否引用Chrome配置,导致日志出现Chrome相关提示。 - 严格使用
EdgeOptions配置,不要混用ChromeOptions的属性。
- 明确指定Edge驱动路径,避免自动查找:
三、额外验证步骤
- 运行测试时添加
--verbose参数查看详细日志,确认测试文件是否被加载:npm test -- --verbose - 单独运行
msedgedriver命令,确认驱动服务正常启动(输出Starting Microsoft Edge WebDriver on port 9515类日志)。
内容的提问来源于stack exchange,提问作者Mayumi Tamura
相关产品推荐
相关产品推荐

