karma 是在真实浏览器中执行测试的运行器,需搭配 jasmine/mocha 等框架及对应适配器(如 karma-jasmine);安装后通过 npx karma init 初始化配置,支持 chrome/headless 模式,需预处理器处理 es 模块,官方已弃用,新项目建议选用 vitest 或 web test runner。

Karma 本身不是测试框架,而是一个在真实浏览器中执行测试的运行器。它需要搭配 Jasmine、Mocha 等测试框架,以及对应适配器(如 karma-jasmine)才能真正跑起单元测试。
安装 Karma 及必要插件
先确保已安装 Node.js 和 npm。然后在项目根目录执行:
npm install --save-dev karma karma-jasmine jasmine-core karma-chrome-launcher
-
karma:核心运行器 -
karma-jasmine:Jasmine 框架适配器 -
jasmine-core:Jasmine 测试库本身 -
karma-chrome-launcher:让 Karma 启动 Chrome 执行测试(也可换karma-firefox-launcher等)
若想支持无头模式(不弹窗),Chrome 启动器默认已支持 Headless;也可加
--no-sandbox参数避免权限问题。
初始化配置文件
运行初始化命令生成 karma.conf.js:
npx karma init
按提示选择:
- 测试框架:
jasmine - 是否用 Require.js:
no - 自动捕获浏览器:
Chrome(或ChromeHeadless) - 源码和测试文件路径:例如
src/**/*.js和test/**/*.spec.js - 是否监听文件变化:
yes(开发时推荐)
生成后,配置文件会包含 files、frameworks、browsers 等关键字段。
编写一个简单测试
假设你有 src/math.js:
export function add(a, b) {
return a + b;
}
在 test/math.spec.js 中写测试:
import { add } from '../src/math.js';
describe('math', () => {
it('should add two numbers', () => {
expect(add(1, 2)).toBe(3);
});
});
注意:若项目未配置模块打包(如 Webpack/Vite),需配合 karma-webpack 或 karma-vite 预处理器,否则 ES 模块语法会报错。
运行测试
添加 npm 脚本到 package.json:
"scripts": {
"test": "karma start",
"test:watch": "karma start --auto-watch --no-single-run"
}
然后运行:
npm test
终端将启动 Chrome(或 Headless Chrome),加载测试代码,并输出结果。成功时显示绿色 ✓,失败则标红并提示错误位置。
补充建议
-
调试测试:在 Chrome 中打开
http://localhost:9876/debug.html,可使用 DevTools 断点调试 -
覆盖率:加装
karma-coverage和istanbul相关插件,配置preprocessors和coverageReporter -
CI 环境:用
ChromeHeadless配合--no-sandbox --disable-dev-shm-usage参数更稳定 -
替代提醒:Karma 已被官方标记为弃用(deprecated),新项目建议评估 Web Test Runner 或 Vitest(支持浏览器环境 via
--browser)
不复杂但容易忽略











