【问题标题】:Coverage of NodeJS using Karma使用 Karma 覆盖 NodeJS
【发布时间】:2015-09-03 07:25:33
【问题描述】:

我尝试从我的项目中获得报道。由于我的 IDE (IntelliJ) 我正在使用 Karmamocha。为了让测试在因果报应中运行,我还添加了browserify。但我只是得到了测试的覆盖范围,而不是实际代码:

这是我的karma.conf.js

"use strict";

module.exports = function(config) {
  config.set({
    basePath: "",
    frameworks: ["mocha", "browserify"],
    files: [
      "test/**/*Test.js"
    ],
    exclude: [
        "src/Main.js"
    ],
    preprocessors: {
      "test/**/*Test.js": ["browserify"],
      "src/**/*.js": ['coverage']
    },
    reporters: ["progress", "coverage"],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ["Chrome"],
    singleRun: false,
    browserify: {
      debug: true,
      transform: [ "browserify-shim" ]
    }
  });
};

摘自我的package.json

{
  ...

  "dependencies": {
    "nssocket": "^0.5.3",
    "winston": "^1.0.0"
  },
  "devDependencies": {
    "browserify": "^10.2.4",
    "browserify-shim": "^3.8.8",
    "karma": "^0.12.36",
    "karma-browserify": "^4.2.1",
    "karma-coverage": "^0.4.2",
    "karma-mocha": "^0.1.10",
    "mocha": "^2.2.5"
  },
  "browserify-shim": {}
}

我尝试将所有代码文件添加到 karma.conf.jsfiles[],但随后我通过 browserify 得到了各种 Uncaught TypeError

files: ["src/**/*.js", ...
preprocessors: {"src/**/*.js": ["browserify"], ...

更新:

我创建了两个测试文件,但它们没有覆盖范围:

test/TestTest.js

"use strict";

var assert = require("assert");
var test = require('../src/Interface/Test.js');

describe("Test", function () {

    describe("Test test, 5", function () {
        it("Test true 5", function () {
            assert.equal(test.addOneOnTrue(true, 5), 6);
        });

        it("Test false", function () {
            assert.equal(test.addOneOnTrue(false, 5), 5);
        });
    });
});

src/Test.js

var Test = function() {
    this.addOneOnTrue = function (boolean, int) {
        if(boolean) {
            ++int;
        }
        return int;
    }
};

module.exports = new Test();

【问题讨论】:

    标签: node.js intellij-idea code-coverage karma-runner browserify


    【解决方案1】:

    使用以下流程:

    • 更改 coverage 的预处理器模式以显式匹配 src

      "src/**/*.js": ["coverage"]
      
    • 重启业力

    • 查看报告

    【讨论】:

    • 感谢您的帮助。我改变了线路,但我仍然没有得到覆盖。我刚刚创建了两个测试文件并将它们添加到这里以确保这些不是问题(这些成功运行)。
    猜你喜欢
    • 2014-09-16
    • 2014-06-06
    • 2022-10-05
    • 2016-02-29
    • 2015-09-10
    • 1970-01-01
    • 2017-01-27
    • 2023-03-28
    相关资源
    最近更新 更多