您的位置:首页 > 其它

Mocha+Istanbul+should小结

2016-03-03 12:36 375 查看
PS:这三个东西可以解决单元测试及代码覆盖率问题,本文总结其用法(针对服务器端JS)。

1 准备工作

Mocha是一个测试库,通常与断言库should一起使用来进行测试;Istanbul是一个进行代码覆盖率测试的工具。

一般而言,Mocha和Istanbul都是全局安装的,should是局部安装的,即

npm install Mocha -g                npm install Istanbul -g

假设有以下项目目录

,我们要对main.js进行测试。

 第一步:建立test目录

由于执行mocha命令时,默认执行test目录下的文件,所以一般测试文件都放在test目录下,由于要测试main.js故新建一个文件,取名为main.test.js

第二步:安装should断言库(假设Mocha和Istanbul已装好)

进入到project目录,执行npm install should --save-dev,此时准备工作已完成。

2 编写main.js和main.test.js

假设main.js内容如下

var fibonacci = function (n) {
if (n === 0) {
return 0;
}
if (n === 1) {
return 1;
}
return fibonacci(n-1) + fibonacci(n-2);
};
exports.fibonacci=fibonacci;
if (require.main === module) {
// 如果是直接执行 main.js,则进入此处
// 如果 main.js 被其他文件 require,则此处不会执行。
var n = Number(process.argv[2]);
console.log('fibonacci(' + n + ') is', fibonacci(n));
}


那么main.test.js应该长这样:

var should=require('should');//引入should
var main=require('../main.js');//引入要被测试的文件

describe('test/main.test.js', function () {
it('should equal 55 when n === 10', function () {
main.fibonacci(10).should.equal(55);
});
});


然后在project目录下用node执行mocha命令,得到如下输出



若执行istanbulcover_mocha命令可得到覆盖率结果和测试结果

3
关于mocha的一些配置项

可以将mocha的一些常用配置项写在一个叫做mocha.opts文件中,这样执行的时候就不用带参数了

server-tests  //指定mocha的执行目录,即有时测试文件不是放在test目录下,使用此命令可以指定mocha执行目录,这里的测试文件就是放在server-tests目录下的

--reporter tap  //指定报告的显示方式,这里是tap风格的


--recursive  //使test的子目录中的测试文件也能执行
--growl  //将测试结果在桌面显示

--watch  //测试文件有变动时会再次执行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: