前言:
折腾两天,算是折腾完了,踩了一堆坑,算是过来了,记一下。
本文示例代码:下载。
参考学习文章:Karma入门。
一、Karma介绍:
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'
到此结束,如无异常应该运行正确。
流程截图如下:
2-1、npm init 2-2、生成的package.json文件 3-1、安装karma和karma-cli 3-2、karma start 4-1、配置 4-2、karma依赖项 5-1、安装mocha和karma-mocha并运行karma start 6-1、test/hello.js 6-2、karma run 6-3、karma主页 6-4、karma debug页面 7-1、test/es6.js 7-2、安装babel依赖 7-3、.babelrc配置文件 7-4、karma.conf.js修改 7-5、编译后代码 8-1、安装lodash 8-2、test/use_lodash.js 8-3、运行use_lodash.js报错 8-4、karma debug页面报错require未定义 9-1、安装webpack 9-2、配置karma.conf.js 9-3、重新运行karma start 9-4、karma页面 9-5、karma run -- --grep 'lodash' END:最终的package.json
网友评论