nodejs 中使用 mocha + should + jscoverage 生成 单元测试覆盖率报告

最近一直在做nodejs,而关于js的单元测试覆盖率网上资料比较少而且吧比较零散,我从网上找来一些资料整理一下分析给大家,希望大家可以少走弯路。

首先我是从windows环境下测试的,用到的工具有

mocha,一个js的测试工具,如果你是已经安装了npm包管理工具,那么直接 npm install mocha -g就可以了,你可以在任何路径使用mocha命令进行测试

should是一个还不错断言库(断言库就是一些使用习惯,实质没有不同),具体用法就直接上代码了。

同样npm install should即可下载should库

var Vehicle = (function () {
    function Vehicle(vType) {
        this.initCar(vType);
        this.distance = 100000;
    }
    Vehicle.prototype.initCar = function (vType) {
        switch(vType) {
            case "car":
                this.weight = 20;
                this.force = 20;
                break;
            case "van":
                this.weight = 60;
                this.force = 30;
                break;
            case "roadster":
                this.weight = 15;
                this.force = 30;
                break;
            default:
                this.weight = -1;
                this.force = -1;
                break;
        }
    };
    Vehicle.prototype.getAcceleration = function () {
        return (this.force / this.weight);
    };
    return Vehicle;
})();
exports.Vehicle = Vehicle;

Mocha测试用例

var V = require("./Vehicle")
var should = require("should");
describe("Vehicle", function () {
    describe("#getAcceleration", function () {
        it("should return an right result", function () {
            var vvv = new V.Vehicle("car");
            vvv.getAcceleration().should.equal(1);
        });
        it("should return an right result", function () {
            var vvv = new V.Vehicle("van");
            vvv.getAcceleration().should.equal(0.5);
        });
        it("should return an right result", function () {
            var vvv = new V.Vehicle("roadster");
            vvv.getAcceleration().should.equal(2);
        });
    });
});

OK全部通过了,下一步,下载测试覆盖率的工具jscoverage,在这里http://siliconforks.com/jscoverage/download.html选择一个windows版本下载,放到你的工作目录里

在这里说说jscoverage的原理就是把你的代码每一个逻辑路径都插入一个检查点,当你的代码运行到那个路径的时候会在计数器里加1,多次运行那段的代码便一直累加上去。

在后在你的工作目录运行 jscoverage ./src ./test --no-highlight 注意后面那个参数--no-highlight必须得加,否则后面mocha生成report时你会发现一团糟(不信你试试)

执行后,进入./test这个目录,你会发现插入检查覆盖代码生成后的js文件,还多出了jscoverage的js和html两个文件,这两个不用管,我们直接用mocha生成报告。

在cd ./test后,执行上面这行命令(如果你的mocha不带指定的文件名,他会把目录下的test子目录或目录下的test.js执行),如果执行成功,马上就会多出report.html这个文件

这里比较神奇的是,mocha会自动识别这个生成后的js文件(竟然知道能检查覆盖率)并生成html文档,对于这一点我一直不解....求高手解答

打开report.html,出来了。。。。。覆盖率91%

 

这里是windows下的,明天写一个linux下使用jscoverage和使用mocha的报告

 

 

转载于:https://www.cnblogs.com/wonderchief/p/Wonderchief_Nodejs_mocha_jscoverage.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值