• 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的报告

  • 相关阅读:
    react.js 小记
    docker命令收集
    前端体系
    微信小程序疑问解答
    微信小程序实战笔记
    jQuery.zTree的跳坑记录
    移动web端的react.js组件化方案
    深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接
    字符串转换成数组,去最号的分割号
    linq any()方法实现sql in()方法的效果
  • 原文地址:https://www.cnblogs.com/wonderchief/p/Wonderchief_Nodejs_mocha_jscoverage.html
Copyright © 2020-2023  润新知