示例:
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时报告为未经测试。
以下是一些截图。
通过查看两种情况下测试的行数,很明显这是错误的。我还可以通过从a
中删除b
和c
作为依赖项并以100%检查覆盖率来确认这一点。
有没有人找到解决方案?如何准确生成依赖于库中其他模块的模块的覆盖范围?