Angular+Jasmine+Karma测试:如何阻止Chrome中Karma自动关闭?
解决Karma启动Chrome后自动关闭的问题
嘿,我来帮你搞定这个Karma自动关闭Chrome的问题!你遇到的情况是因为Karma默认在**单次运行模式(singleRun)**下,跑完所有测试就会自动关闭浏览器和进程。结合你的配置,给你几个可行的解决办法:
方法1:运行测试时添加--watch参数
你的配置里已经通过WATCH = process.argv.includes('--watch')做了判断,所以只要在启动测试时加上这个参数,就能让Karma进入监听模式,保持浏览器打开:
- 如果是用Angular CLI的命令:
ng test --watch - 如果是直接调用Karma:
karma start path/to/karma.config.js --watch - 如果是npm脚本,记得用双横杠把参数传递给Karma:
npm test -- --watch
方法2:修改karma.config.js的核心配置
你可以直接在config.set里显式设置singleRun和autoWatch,强制Karma保持运行状态:
const webpackConfig = require('../../../webpack/webpack.test.js'); const WATCH = process.argv.includes('--watch'); module.exports = (config) => { config.set({ // 你的其他基础配置... autoWatch: true, // 开启文件监听,代码变化时自动重跑测试 singleRun: false, // 禁止测试完成后自动退出 // 其他配置项... }); };
这里的singleRun: false是关键,它会让Karma一直运行,不会在测试结束后关闭浏览器;autoWatch: true则会监听文件变化,自动触发测试重新执行。
方法3:完善现有命令行参数逻辑
如果你想保留基于--watch参数的动态判断,可以把WATCH变量关联到singleRun和autoWatch上:
module.exports = (config) => { config.set({ // 其他配置... autoWatch: WATCH, singleRun: !WATCH, // 当watch模式开启时,singleRun设为false // 其他配置项... }); };
这样当你不带--watch参数时,Karma还是会单次运行后关闭;带参数时就会保持浏览器打开并监听文件变化。
内容的提问来源于stack exchange,提问作者Tester
相关产品推荐
相关产品推荐

