前面我写了一篇博客是《前端自动化测试工具PhantomJS+CasperJS结合使用教程》其中使用CasperJS不仅可以进行单元测试,还可以进行浏览器测试,是个很不错的工具,今天介绍的工具是Karma+Jasmine+PhantomJS组合的前端javascript单元测试工具。
1.介绍
Karma是由Google团队开发的一套前端测试运行框架,karma会启动一个web服务器,将js源代码和测试脚本放到PhantomJS或者Chrome上执行。
2.安装
- 包管理package.json
1 | npm init |
一路回车下去即可
- 在项目中安装karma包
1 | npm i karma --save-dev |
- karma初始化
1 | karma init |
按照下面的选择好
1 | E:\javascript\auto-test\karma-demo>karma init |
上图是选项的示例,这里使用jasmine测试框架,PhantomJS作为代码运行的环境(也可以选择其他浏览器作为运行环境,比如Chrome,IE等)。最后在项目中生成karma.conf.js文件
- 安装jasmine-core
1 | npm i jasmine-core --save-dev |
3.demo1–ES5
目录结构1
2
3
4
5karma-example
├── src
├── index.js
├── test
├── package.json
源码:src–index.js1
2
3
4
5
6
7function isNum(num) {
if (typeof num === 'number') {
return true;
} else {
return false;
}
}
测试:test–index.js1
2
3
4
5
6describe('index.js: ', function() {
it('isNum() should work fine.', function() {
expect(isNum(1)).toBe(true)
expect(isNum('1')).toBe(false)
})
})
运行,执行命令1
karma start
命令行结果
1 | 14 10 2016 10:56:13.038:WARN [karma]: No captured browser, open http://localhost:9876/ |
4.demo2-ES6
安装使用Webpack+Babel1
2npm i karma-webpack --save-dev
npm i babel-loader babel-core babel-preset-es2015 --save-dev
源码src–index2.js1
2
3
4
5
6
7
8
9
10function isNum(num) {
if (typeof num === 'number') {
return true;
} else {
return false;
}
}
export {isNum};
// export default isNum;
测试test–index2.js
1 | import {isNum} from '../src/index2'; |
修改配置文件karma.conf.js
1 | config.set({ |
参考阅读: