Karma 快速上手

Karma是一个JavaScript test runner。

Test Runner

简单来说Test runner就是测试的实施者。很多时候,我们本身也是一个测试实施者。考虑这样一个对于前端开发者很常见的场景:

新建了一个脚本文件,并在这个脚本文件里面写上了一个函数。为了保证这个函数运行如预期,我们下一步是将脚本引用到页面上。紧接着打开浏览器,并查看执行结果。如果运行结果未如预期,我们返回编辑器,修改函数,然后再次运行测试。反复这样一个过程直至验证通过。在此过程中,我们充当的角色即是一个测试实施者。

重复的任务通常都可以自动化。Karma正是一个自动化的测试实施者。

安装Karma

Karma是一个npm模块,安装Karma异常简单。与Grunt相同,karma通常建议作为一个依赖模块安装在本地。然后通过Karma CLI运行。

1
2
3
4
5
// 安装karma依赖模块
npm install karma --save-dev

// 全局安装karma cli
npm install -g karma-cli

安装Karma CLI之后即可在调用karma来启动测试:

1
karma start

如果未安装Karma CLI,则需指定完整的本地karma路径:

1
./node_modules/karma/bin/karma start

项目配置

不同的项目千差万别,Karma提供了许多配置选项让项目的测试更易进行。配置文件可以通过karma init命令来生成,执行karma init之后,会进入一个交互式的命令行来配置选项。常见的配置,例如测试框架、自动捕捉的浏览器、源文件和测试文件等等。

当配置完成后,即可通过以下命令来启动测试:

1
karma start karma.conf.js

一个项目可以设置多个配置文件,给karma start提供不同的文件名即可调用不同的配置:

1
karma start another.conf.js

Plugins

Karma Plugins同样是npm模块,通过npm install来安装插件。例如,安装karma-mocha

1
npm install karma-mocha --save-dev

默认情况下,Karma为自动加载node_modules目录下与karma相邻,并以karma-开头的node模块。此类模块,例如:

  • karma-mocha
  • karma-coverage
  • karma-mocha-reporter
  • karma-phantomjs-launcher

也可以通过配置plugins属性来夹在特定的模块:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// karma.conf.js

module.exports = function (config) {
config.set({
// ...

plugins: [
'karma-mocha',
'karma-chai'
]

// ...
});
};