Istanbul js由于所需文件而导致代码覆盖率报告不正确

时间:2016-12-28 06:21:54

标签: javascript node.js requirejs code-coverage istanbul

由于在早期代码中测试了所需的文件,伊斯坦布尔会生成人为的低覆盖率报告。

示例:

test.js

require('./test/aTests.js');
require('./test/bTests.js');
require('./test/cTests.js');

aTests.js或bTests.js

var a = require('../a.js);
// Test resulting in very high coverage of a.js

cTests.js

var c = require('../c.js);
// Tests covering every line of c.js

c.js

var a = require('./a.js');
var b = require('./b.js');

mobule.exports = class c {
    constructor() {
         // c module depends on a and b
         this.a = new a();
         this.b = new b();
    }
}

我所看到的是,我的代码库其余部分的代码覆盖率接近100%,但当我向c.js添加test.js时,数字会向下发射。根据我的lcov文件中的每一行都经过测试(它很短)但是因为它依赖于大部分代码库,所以这些所需文件在第二次require() d时报告为未经测试。

以下是一些截图。

使用代码库中的每个文件。 Testing with all files shows 66% of lines

没有最终文件" c.js" Testing with all but the primary file shows 100% of lines

通过查看两种情况下测试的行数,很明显这是错误的。我还可以通过从a中删除bc作为依赖项并以100%检查覆盖率来确认这一点。

有没有人找到解决方案?如何准确生成依赖于库中其他模块的模块的覆盖范围?

0 个答案:

没有答案