使用Dojo,Mocha和Blanket进行代码覆盖 - 始终报告1条覆盖线

时间:2015-03-04 09:48:30

标签: javascript dojo code-coverage mocha blanket.js

我尝试设置Blanket.js来获取有关我们使用Mocha测试的Dojo应用程序代码覆盖率的报告。到目前为止,Blanket似乎加载,检测正确的文件,它似乎也找出它应该寻找的行。但是,报告中的每个文件/模块都显示为测试了一行。它看起来像是顶级的“定义”线。这是一个不是最小的例子,但它最低限度地代表我们的应用程序设置并重现问题。

文件结构

▾ dojo-mocha-blanket/
  ▾ modules/
      GUIWidget.html
      GUIWidget.js
  ▾ test/
    ▾ lib/
        blanket_mocha.js // from the blanket /dist
        chai.js
        mocha-blanket.js // adapter as per instructions
        mocha.css
        mocha.js
    ▾ spec/
        GUIWidget.js
      testrunner.html
    index.html

道场设置

<html>
<head>
    <title>Dojo-Mocha-Blanket</title>
</head>
<body>
    <div id="GUIWidgetContainer"></div>
    <script>
        var dojoConfig = {
            async: true,
            baseUrl: "",
            modulePaths: {
                "modules": "modules"
            }
        };
    </script>
    <script src="//ajax.googleapis.com/ajax/libs/dojo/1.10.3/dojo/dojo.js"></script>
    <script>
        require([
            "dojo/dom",
            "modules/GUIWidget"
        ], function (dom, GUIWidget) {
            var widget = new GUIWidget({}, "GUIWidgetContainer");
        });
    </script>
</body>
</html>

要测试的模块

define([
    "dojo/_base/declare",
    "dijit/form/Select",
    "dijit/_TemplatedMixin",
    "dijit/_WidgetsInTemplateMixin",
    "dijit/_WidgetBase",
    "dojo/text!modules/GUIWidget.html"
], function(
    declare,
    Select,
    _TemplatedMixin,
    _WidgetsInTemplateMixin,
    _WidgetBase,
    template
) {
    return declare("GUIWidget", [_WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin], {

        templateString: template,

        addNumbers: function(lhs, rhs) {
            return lhs + rhs;
        },

        postCreate: function() {
            this.inherited(arguments);
            this.header.innerHTML = this.addNumbers(40, 2);
        }

    });
});

测试设置

<html>
<head>
    <title>Mocha spec runner</title>
    <link rel="stylesheet" href="lib/mocha.css">
</head>
<body>
<div id="mocha"></div>
<script src="lib/mocha.js"></script>
<script 
    src="lib/blanket_mocha.js"
    data-cover-adapter="lib/mocha-blanket.js"
    data-cover-only="/modules"></script>
<script src="lib/chai.js"></script>
<script>
    mocha.setup("bdd");
    mocha.globals(["dojo", "dijit"]);
    mocha.setup();
    expect = chai.expect;
</script>
<script>
    var dojoConfig = {
        async: true,
        packages : [{
            name : "modules",
            location : "/modules"
        } ]
    };
</script>
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.10.3/dojo/dojo.js"></script>
<script>
    require(
        {
            paths: {
                "spec": "/test/spec"
            }
        },
        ["spec/GUIWidget"], function() {
            mocha.run();
        });
</script>
</body>
</html>

测试

define([
    "modules/GUIWidget"
], function(
    GUIWidget
) {
    describe("GUIWidget", function() {
        var widget;

        beforeEach(function() {
            widget = new GUIWidget();
            widget.startup();
        });

        it("Should set header to 42", function() {
            expect(widget.header.innerHTML).to.equal("42");
        });

        it("Should add numbers", function() {
            expect(widget.addNumbers(1, 2)).to.equal(3);
        })

        afterEach(function() {
            widget.destroyRecursive();
        });
    });
});

结果 (放大图像hereenter image description here

为长代码和所有引导的东西道歉,但我发现设置是非平凡的:)如果有人对于为什么会发生这种情况有任何想法,我会全力以赴。谢谢!

0 个答案:

没有答案