使用 npm 安装 Karma 及其相关工具:
npm install --save-dev karma karma-jasmine jasmine-core karma-chrome-launcher
初始化 Karma 配置文件:
npx karma init
Karma 配置文件
创建一个 karma.conf.js
文件:
module.exports = function(config) {
config.set({
// 基础路径,用于解析文件和排除文件
basePath: '',
// 使用的测试框架
frameworks: ['jasmine'],
// 要加载到浏览器中的文件列表
files: [
'src/**/*.js',
'test/**/*.spec.js'
],
// 要排除的文件列表
exclude: [],
// 预处理器配置
preprocessors: {
'src/**/*.js': ['coverage']
},
// 使用的报告器
reporters: ['progress', 'coverage'],
// Web 服务器端口
port: 9876,
// 启用或禁用颜色输出
colors: true,
// 日志级别
logLevel: config.LOG_INFO,
// 启用或禁用自动监控文件并执行测试
autoWatch: true,
// 启动的浏览器
browsers: ['Chrome'],
// 持续集成模式
singleRun: false,
// 并发级别
concurrency: Infinity
});
};
测试文件
创建一个 src/sum.js
文件:
function sum(a, b) {
return a + b;
}
创建一个 test/sum.spec.js
文件:
describe('sum', function() {
it('should return the sum of two numbers', function() {
expect(sum(1, 2)).toBe(3);
});
});
运行测试:
npx karma start
config.set(configurationObject):配置 Karma 的运行参数。
module.exports = function(config) {
config.set({
// 配置参数
});
};
files:指定要加载到浏览器中的文件列表。
files: [
'src/**/*.js',
'test/**/*.spec.js'
];
frameworks:指定使用的测试框架。
frameworks: ['jasmine'];
reporters:指定使用的报告器。
reporters: ['progress', 'coverage'];
browsers:指定要启动的浏览器。
browsers: ['Chrome'];
preprocessors:指定要应用的预处理器。
preprocessors: {
'src/**/*.js': ['coverage']
};
autoWatch:启用或禁用自动监控文件并执行测试。
autoWatch: true;
singleRun:启用或禁用持续集成模式。
singleRun: false;
集成 CI 工具
Karma 可以与 CI 工具(如 Jenkins、Travis CI)集成,自动运行测试并生成报告。以下是一个简单的 Travis CI 配置示例:
language: node_js
node_js:
- "stable"
install:
- npm install
script:
- npm test
自定义报告器
可以通过安装和配置插件来自定义报告器,例如使用 karma-spec-reporter
来生成更详细的测试报告:
npm install --save-dev karma-spec-reporter
在 karma.conf.js
中配置:
reporters: ['spec'],
调试测试代码
Karma 提供了调试工具,可以在浏览器中直接调试测试代码。只需在 karma.conf.js
中将 singleRun
设置为 false
并运行 Karma,打开浏览器的开发者工具即可调试测试代码。