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内容如下
那么main.test.js应该长这样:
然后在project目录下用node执行mocha命令,得到如下输出
若执行istanbulcover_mocha命令可得到覆盖率结果和测试结果
3
关于mocha的一些配置项
可以将mocha的一些常用配置项写在一个叫做mocha.opts文件中,这样执行的时候就不用带参数了
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 //测试文件有变动时会再次执行
相关文章推荐
- LeetCode 42 - Trapping Rain Water
- LINQ入门(1)-数据处理语言
- verilog学习五点经验分享
- C语言数组与指针(四)
- ios获取当前的时间
- PHP获取无限分类的完整等级列表
- linux基本使用
- hdu 1258 Sum It Up
- 高等数学:第十章 曲线积分与曲面积分(3)高斯共识、通量、散度、斯托克斯共识、环流量、旋度
- Linux NFS 服务器和客户端
- Excel文件上传,解析,下载(二 Excel文件解析)
- 初识gdbserver
- ios开发——解决UICollectionView的cell间距与设置不符问题
- 周鸿祎:与超30亿票房的《美人鱼》擦肩而过?
- Azure 上SQL Database(PaaS)Time Zone时区问题处理(进阶篇)
- beautifulsoup
- 高等数学:第十章 曲线积分与曲面积分(2)对面积、坐标的曲面积分
- HDU 4864 Task(贪心)
- 蓝桥杯历届-幻方填空
- From String To Erlang Code