6

在我的代码中,我有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 )
================================================================================

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

4

2 回答 2

2

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

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

于 2014-11-14T01:27:50.400 回答
2

没关系,我想通了。

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

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

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

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

于 2014-11-14T15:25:21.893 回答