我有项目优秀.js https://github.com/vitaly-t/excellent自动测试设置jest https://github.com/facebook/jest and 木偶师 https://github.com/GoogleChrome/puppeteer,它成功运行了所有测试,其中可以在 Travis CI 上看到 https://travis-ci.org/vitaly-t/excellent/builds.
但经过大量配置调整后,我无法使其报告正确的覆盖范围。无论执行什么测试,覆盖率都根本无法反映这一点。
该库仅包含一个 JavaScript 文件excellent.js
, 和我的笑话配置.js https://github.com/vitaly-t/excellent/blob/master/jest.config.js已按照覆盖范围指示进行设置:
module.exports = {
collectCoverage: true,
collectCoverageFrom: [
'src/excellent.js'
],
testURL: 'http://localhost/',
setupFiles: [
'./src/excellent.js'
]
};
Here're 所有的测试 https://github.com/vitaly-t/excellent/tree/master/test,如果你先这样做,一切都会通过npm install
, 进而npm test
.
那么我错过了什么?为什么我无法正确报告覆盖范围?
ISSUE
大多数测试都使用 Puppeteer,当代码在 Puppeteer 提供的浏览器中执行时,代码执行情况不会反映在 Jest 代码覆盖率报告中。
SOLUTION
所有测试都不需要 Puppeteer,因此我将它们重构为 Jest 测试。代码覆盖率现在是准确的,目前如下:
excellent.js | 63.47 | 48.7 | 57.78 | 62.96
我创建了一个进行这些更改的拉取请求 https://github.com/vitaly-t/excellent/pull/8.
附加信息
现在可以为 Puppeteer 页面生成代码覆盖率报告 https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#class-coverage还有一个图书馆可以提供帮助在伊斯坦布尔查看它们 https://github.com/istanbuljs/puppeteer-to-istanbul但这些代码覆盖率报告是独立于 Jest 生成的。
要在 Puppeteer 页面中进行测试并将这些测试的覆盖率反映在 Jest 生成的报告中,需要将 Puppeteer 页面覆盖率报告与 Jest 覆盖率报告合并。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)