使用 Blanket 的 Mocha 测试覆盖率不起作用

Test coverage in Mocha with Blanket doesn't work

我有一个 Node 应用程序,我想测试它并获取覆盖率报告。我遵循了 Getting Started Guide 但它似乎不起作用。

我的来源,在 src/two.js:

var two = 1 + 1;
module.exports = two;

我的测试,在test/two.js:

var expect = require('expect');
var two = require('../src/two');

describe('two', function() {
  it('should be 2', function(done) {
    expect(two).toBe(2);
    done();
  });
});

还有我的package.json:

{
  "scripts": {
    "test": "mocha",
    "cover": "mocha -r blanket -R html-cov > coverage.html"
  },
  "devDependencies": {
    "blanket": "^1.2.1",
    "expect": "^1.13.4",
    "mocha": "^2.3.4"
  }
}

当我 运行 npm run test 时,一切都如您所愿。但是当我 运行 npm run cover 时,在我的 coverage.html 文件中我得到 0% 的覆盖率 0 SLOC 而没有别的。

我通过将此添加到 package.json 得到它 运行:

...
  "config": {
    "blanket": {
      "pattern": "src",
      "data-cover-never": ["node_modules"]
    }
  },
...

显然 Blanket 默认为 src,尽管指南是这么说的(GitHub 上有一个旧的 open issue)。

它还试图覆盖所有匹配模式的路径,而不仅仅是 src 目录,所以在这种情况下它也试图覆盖外部文件(node_modules/has/src/index.js,这是由 Expect 安装)。我不得不添加 data-cover-never 来避免它。