如何从istanbul coverage中忽略node.js中的必需文件

时间:2014-11-06 19:59:54

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

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

在我的package.json中,我有

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

我只想覆盖我的主文件,但它也涵盖了event-stream的文件,所以我得到了像

这样的东西
=============================== Coverage summary ===============================

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

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

2 个答案:

答案 0 :(得分:2)

没关系,我明白了。

khansolo说我考虑过什么,但是当我尝试它时,它没有工作。

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

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

通过对测试进行这种伪模拟。我们可以将保密范围保留为我们自己的文件,而不是' event-stream'。

答案 1 :(得分:1)

伊斯坦布尔允许您告诉它忽略具有特定注释的代码,格式为

/* 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