【问题标题】:How to ignore required files in node.js from istanbul coverage如何从伊斯坦布尔覆盖范围中忽略 node.js 中所需的文件
【发布时间】:2015-01-03 11:35:47
【问题描述】:

在我的代码中我有var es = require('event-stream');

在我的 package.json 中,我有

"scripts": {
    "test": "istanbul cover ./node_modules/mocha/bin/_mocha -- -R spec",
}

我只想覆盖我的主文件,但它也覆盖了事件流的文件,所以我得到了类似的东西

=============================== Coverage summary ===============================

Statements   : 24.74% ( 757/3060 )
Branches     : 5.42% ( 88/1625 )
Functions    : 15.56% ( 70/450 )
Lines        : 25.37% ( 735/2897 )
================================================================================

有没有办法只覆盖我自己的代码?

【问题讨论】:

    标签: javascript node.js command-line mocha.js istanbul


    【解决方案1】:

    Istanbul 允许您告诉它忽略带有特定 cmets 的代码,格式为

    /* istanbul ignore <word>[non-word] [optional-docs] */
    

    因此,您可以像这样忽略 require() 语句:

    /* istanbul ignore next */
    var es = require('event-stream');
    

    require 语句生成的杂乱无章将在您的覆盖率报告中显示为灰色,并且不包含在总数中。有关详细信息,请参阅文档:https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md

    【讨论】:

    • will_wow 这似乎对我不起作用。使用 cmets 时,我得到与不使用时相同的覆盖率报告。还有其他人找到解决方案吗?
    【解决方案2】:

    没关系,我想通了。

    khansolo 所说的我已经考虑过,但是当我尝试时,它没有用。

    问题是当我使用沙盒模块时。这会导致任何未模拟的功能成为覆盖范围的一部分。

    var es = require('event-stream');
    var main = SandboxedModule.require('../main', {
        requires: { 
            'gulp-s3': gulpS3,
            'knox': faux,
            'event-stream': es
        }
    });
    

    通过对测试进行这种伪模拟。我们可以将覆盖范围保持在我们自己的文件中,而不是“事件流”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-22
      • 2016-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-11
      相关资源
      最近更新 更多