您的位置:首页 > Web前端 > Node.js

(NodeJS+unit.js+MochaJS+istanbul)简单操作实例

2017-04-22 00:00 731 查看
在这前,需要安装并配置Node.js、npm服务!安装与配置,可以参考文档:http://blog.csdn.net/henni_719/article/details/54377375

安装成功后,执行如下操作。

开始进行如下操作如下操作:

1.创建项目文件夹

选择相应的路径,创建测试项目文件,例如在E盘创建文件夹“
MochaPro”。在dos窗口执行命令:

D:
mkdir MochaPro

2.进入MochaPro文件安装macho

进入到MachaPro文件夹下,执行命令:npm install macho,安装mocha花费时间相对较长。在Dos窗口执行命令:

D:
cd MochaPro
npm install mocha
命令执行成功之后,执行命令:mocha --version,验证安装是否成功



3.进入MochaPro文件安装unit.js

安装unit.js时,要与mocha方式保持一致,不然在require("unit.js")时,mocha提示找不到包。经过尝试,在MochaPro文件下安装时,在执行mocha进行javascript单元测试时,才
不会出现找不到module的问题。在dos窗口指定命令:

D:
cd MochaPro
npm install unit.js

4.mocha + unit.js简单的测试实例

在MochaPro文件夹下,创建源代码文件与测试文件夹。



JSDemo文件夹用来存放要测试的JS代码、JSDemoTest文件用来存放测试代码、node_modules是用来存放npm安装的包。

在JSDemo文件下编写一个简单的测试代码:DW.js,在其中放置如下代码:

function dw(str1){
return str1;
};
//导出dw函数
module.exports= dw;
在JSDemoTest文件夹下编写一个简单测试代码:dwTest.js,在其中放置如下代码:
//加载要测试的代码块
var dw= require("../JSDemo/DW.js");
//加载断言包
var test = require("unit.js");
//创建一个测试用例
describe("test dw",function(){
var str="hello";
it("test dw function",function(){
test.should(dw(str)).be.equal("hello");
});
it("test dw function",function(){
test.should(dw(1)).be.equal(1);
});
});


5.执行mocha + unit.js简单的测试实例

在JSDemoTest路径下执行命令,mocha dwTest.js,在dos窗口的操作如下:
E:
cd "E:\MochaPro\JSDemoTest"
mocha dwTest.js
或
E:
cd MochaPro
cd JSDemoTest
mocha dwTest.js


执行成功如下:



6.安装istanbul

mocha执行通过,但是看不到清晰条理的,不知道相应的代码覆盖,安装istanbul来查看源程序的代码覆盖率。这个模块我选择安装的是全局,我按装局部无法使用该命令,可能是我之前安装npm时使用的全局的。在dos窗口执行命令:

win+R
cmd
npm install -g istanbul
在dos窗口执行命令:istanbul help来查看istanbul的命令帮助:



7.使用istanbul查看DW.js的代码覆盖

执行完mocha dwTest.js时,然后进入到JSDemo文件下,执行命令:istanbul cover DW.js,在dos窗口的操作流程就是:
E:
cd "E:\MochaPro"
istanbul cover node_modules/mocha/bin/_mocha


上述命令执行成功,会有如下结果:



8.执行istanbul cover node_modules/mocha/bin/_mocha成功会创建coverage文件

这条命令同时还生成了一个 coverage 子目录,其中的 coverage.json 文件包含覆盖率的原始数据,lcov-report 是可以在浏览器打开的覆盖率报告,其中有详细信息,到底哪些代码没有覆盖到。



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: