我使用毯子在mocha代码覆盖范围内获得0%覆盖0 SLOC

时间:2015-04-24 19:55:11

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

我试图在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, ' ');
}

和testS文件夹下的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');
    });
} )

4 个答案:

答案 0 :(得分:1)

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

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

    2. 运行测试
    3. Generage覆盖率报告:npm run coverage

    4. 覆盖率报告将在coverage/lcov-report/index.html

      中提供

答案 1 :(得分:0)

从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 :(得分:0)

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

答案 3 :(得分:0)

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

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

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