【问题标题】:I am getting 0 % coverage 0 SLOC in mocha code coverage using blanket我使用毯子在 mocha 代码覆盖率中获得 0 % 覆盖率 0 SLOC
【发布时间】:2015-07-03 13:55:27
【问题描述】:

我正在尝试获取 MOCHA JS 测试中的代码覆盖率。我正在使用毯子,但我得到 0 % 的覆盖率 0 SLOC,为什么我不明白。 我的 package.json 是

{
  "name": "basics",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "mocha && mocha test --require blanket --reporter html-cov > coverage.html"
  },
  "author": "",
  "license": "MIT",
  "devDependencies": {
    "chai": "~2.2.0",
    "mocha": "~2.2.4",
    "blanket": "~1.1.6",

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

而 index.js 是

exports.sanitize = function(word){


    return word.toLowerCase().replace(/-/g, ' ');
}

exports.testToString = function(){


    return word.toLowerCase().replace(/-/g, ' ');
}

test 文件夹下的 indexSpec.js 是

var chai = require('chai');
var expect = require('chai').expect;
var word = require('../index.js');

describe ('sanitize', function(){
    it('String matching ', function(){

        var inputWord = 'hello WORLD';
        var outputWord = word.sanitize(inputWord);
        expect(outputWord).to.equal('hello world');
        expect(outputWord).to.not.equal('HELLO WORLD');
        expect(outputWord).to.be.a('string');
        expect(outputWord).not.to.be.a('number');

    });

    it('Checke hyphen ', function(){
        var inputWord = 'hello-WORLD';
        var outputWord = word.sanitize(inputWord);
        expect(outputWord).to.equal('hello world');
    });
} )

【问题讨论】:

  • 我也遇到了同样的问题,你解决过这个问题吗?我的 package.json 脚本和配置看起来和你的一样。
  • 我也遇到了这个问题。
  • 这个问题在我安装了最新的节点 js 后得到了解决

标签: javascript node.js mocha.js chai blanket.js


【解决方案1】:

从 git repo 获取毯子。我不知道他们的 npm 包有什么问题,但它对我也不起作用。

从 git repo 获取模块工作正常。

在您的 package.json 文件中进行以下更改

"devDependencies": {
    "chai": "~2.2.0",
    "mocha": "~2.2.4",
    "blanket": "git://github.com/alex-seville/blanket.git"
},

【讨论】:

    【解决方案2】:

    我遇到了这个问题,并按照 Neilskrijger 的建议在我的根目录中添加了一个毯子.js 文件...https://github.com/alex-seville/blanket/issues/361。 然后,我将 package.json 中的毯子模式设置为“/lib”,这是我的源代码的根目录,它可以正常工作。需要正斜杠。我的测试脚本是“mocha --require毯子-R html-cov --recursive>coverage.html”。

    【讨论】:

      【解决方案3】:

      似乎我们很多人都使用了相同的教程并遇到了相同的问题。

      我已经尝试了此页面上给出的所有提示(尝试使用节点版本:node-v4.3.1 和 node-v5.7.0)+ 更多没有任何运气 我最终得到了另一个包 Istanbul,我应该从一开始就这样做,因为我通常使用统计数据作为使用哪个包的指标(它被更多用户使用)。 首先尝试使用这个包并且它有效:-) 我将此添加到 package.json 的脚本部分:

      "coverage" : "./node_modules/.bin/istanbul 覆盖./node_modules/mocha/bin/_mocha -- -R spec"

      【讨论】:

        【解决方案4】:

        保罗是对的。使用有缺陷的库是没有意义的。使此代码适用于伊斯坦布尔的步骤:

        1. 全球安装伊斯坦布尔npm install -g istanbul
        2. 更改 package.json 中的脚本部分
          "scripts": {
            "test": "mocha",
            "coverage": "istanbul cover node_modules/mocha/bin/_mocha -- -R spec"
          },
        
        1. 输入npm test运行测试

        2. 世代覆盖率报告:npm run coverage

        覆盖报告将在coverage/lcov-report/index.html提供

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-11-11
          • 2017-05-31
          • 2012-08-04
          • 2014-04-16
          • 2015-10-06
          • 2013-05-14
          • 2012-12-22
          • 1970-01-01
          相关资源
          最近更新 更多