Karma入门
前言:
折腾两天,算是折腾完了,踩了一堆坑,算是过来了,记一下。
本文示例代码:下载。
参考学习文章:Karma入门。
一、Karma介绍:
![](https://img.haomeiwen.com/i6515740/415bbc8c1af48c55.png)
Karma是一个基于Node.js的JavaScript测试执行过程管理工具(Test Runner)。该工具可用于测试所有主流Web浏览器,也可集成到CI(Continuous integration)工具,也可和其他代码编辑器一起使用。这个测试工具的一个强大特性就是,它可以监控(Watch)文件的变化,然后自行执行,通过console.log显示测试结果。
二、安装
nodejs版本:8.9.1
npm版本:5.5.1
1、创建项目目录:
$ mkdir karma-test
$ cd karma-test
$ mkdir test
说明:test文件夹下放测试代码
2、创建初始化package.json
$ npm init
3、安装karma和karma-cli
$ npm install karma --save-dev
$ npm install karma-cli --save-dev
$ karma start
三、配置
运行karma init开启配置向导。
4、配置
$ karma init
命令执行完后会生成一个karma.conf.js配置文件,package.json中也加入两个了karma相关依赖项。
5、安装mocha和karma-mocha
$ npm install mocha --save-dev
$ npm install karma-mocha --save-dev
$ karma start
安装完成后package.json中会加入相应的依赖项,然后运行karma start一切正常。
四、编写测试用例
6、test/hello.js
describe('A spec suite', function(){
it('contains a passing spec', function(){
console.log('Hello Karma');
})
});
$ karma start # 【运行karma】
$ karma run #【命令行运行测试用例】
$ karma run -- --grep 'A spec suite' #【运行特定测试用例】
在test文件夹下建hello.js,test文件夹即为karma init执行配置的代码存放目录。
运行特定测试用例:karma run -- --grep 'A spec suite',第一个‘--’表示后面的选项--grep 'A spec suite'是传递给测试框架的选项,这里指mocha。
相关截图如下:6-*、说明图
五、测试ES6转换
7、安装babel
$ npm install karma-babel-preprocessor --save-dev
$ npm install babel-preset-env --save-dev
$ npm install babel-core --save-dev
test/es6.js
describe('ES6 spec', function(){
it('es6 arrows feature', function(){
let add = (x, y) => x + y;
console.log(add(1, 2));
})
})
创建 .babelrc,配置转换格式:
{"presets": ["env"]}
修改karma.conf.js,编辑preprocessors部分,让所有的js文件都先用babel转换一下。
preprocessors: {"test/*.js": ['babel']},
六、集成webpack
测试用例,引入第三方库lodash
8、test/use_lodash.js
import _ from 'lodash';
describe('Use lodash suite', function () {
it('fill array', function () {
let array = [1, 2, 3];
_.fill(array, 'a');
console.log(array);
})
})
#运行
$ karma run -- --grep 'lodash'
虽然已经转换成了ES5语法,但是由于引入了第三方库lodash,浏览器是没法识别require指令的。
因此我们需要使用打包工具webpack来将第三库一起打包出来,让浏览器可以运行。
截图如下:8-*、说明图片
9、安装webpack和karma-webpack
$ npm install webpack --save-dev
$ npm install karma-webpack --save-dev
然后,修改karma.conf.js, 同样修改preprocessors部分,添加webpack到
preprocessors: {"test/*.js": ['babel','webpack']},
配置修改后,重新运行karma start,再运行
$ karma run -- --grep 'lodash'
到此结束,如无异常应该运行正确。
流程截图如下:
![](https://img.haomeiwen.com/i6515740/12f20ac34367edb3.png)
![](https://img.haomeiwen.com/i6515740/7fad999b65d19630.png)
![](https://img.haomeiwen.com/i6515740/ae51f52f87811f34.png)
![](https://img.haomeiwen.com/i6515740/1d2bcd9a865c435f.png)
![](https://img.haomeiwen.com/i6515740/7368d48953fbb875.png)
![](https://img.haomeiwen.com/i6515740/26b2781eb22462b8.png)
![](https://img.haomeiwen.com/i6515740/09136b7ee08bbf72.png)
![](https://img.haomeiwen.com/i6515740/eecb32843cc61685.png)
![](https://img.haomeiwen.com/i6515740/05276bef95cb549b.png)
![](https://img.haomeiwen.com/i6515740/6b0a74aed0b16332.png)
![](https://img.haomeiwen.com/i6515740/aea6bbca28ff6d1f.png)
![](https://img.haomeiwen.com/i6515740/7034c34d27b6fc49.png)
![](https://img.haomeiwen.com/i6515740/bfe7c030f202678d.png)
![](https://img.haomeiwen.com/i6515740/c974e6f457a217e7.png)
![](https://img.haomeiwen.com/i6515740/9afb01fb9cdc0e2c.png)
![](https://img.haomeiwen.com/i6515740/067e0d8003adf21d.png)
![](https://img.haomeiwen.com/i6515740/1d948bf76cb08b36.png)
![](https://img.haomeiwen.com/i6515740/32faee8d04229f15.png)
![](https://img.haomeiwen.com/i6515740/1185e9ba8d371c7f.png)
![](https://img.haomeiwen.com/i6515740/857208f5c8d6db5a.png)
![](https://img.haomeiwen.com/i6515740/ce3d0bc09b2287b8.png)
![](https://img.haomeiwen.com/i6515740/8e3a8d0a3446cefa.png)
![](https://img.haomeiwen.com/i6515740/036a4a2e3ab87220.png)
![](https://img.haomeiwen.com/i6515740/af10179f6f9a471e.png)
![](https://img.haomeiwen.com/i6515740/e035042a7744cf4b.png)
![](https://img.haomeiwen.com/i6515740/4579e59b0f4168ee.png)