我可以使用 Karma、Tape 和 Istanbul(特别是 babel-istanbul)来获得我的 ES6 代码库的正确覆盖率报告,但 HTML 报告显示一些红色覆盖的行,即使它在边缘显示它们已经在测试套件中被覆盖了几次:
特别是,第 13 行显示了 4x 覆盖率,这反映了我刚刚编写的测试(调用concat()
了四次)。
为什么那条线是红色的?
我可以使用 Karma、Tape 和 Istanbul(特别是 babel-istanbul)来获得我的 ES6 代码库的正确覆盖率报告,但 HTML 报告显示一些红色覆盖的行,即使它在边缘显示它们已经在测试套件中被覆盖了几次:
特别是,第 13 行显示了 4x 覆盖率,这反映了我刚刚编写的测试(调用concat()
了四次)。
为什么那条线是红色的?
嗨,我认为这是因为在您的 mocha 文件中,您需要 fromlib
而不是src
.
您应该需要 src 代码而不是编译后的代码。并确保在你的 package.json 脚本中你有类似的东西
{
"compile": "babel src/ -d lib/ --presets es2015 --source-map both",
"test": "npm run compile && mocha",
"test-cov": "npm run compile && istanbul cover _mocha -- --opts ./test/mocha.opts"
}
src
是你的源代码
lib
是编译后的代码
--source-map both
可以帮助伊斯坦布尔跟踪你的源代码的覆盖率
在 mocha.opts
--require babel-polyfill
--compilers js:babel-register
我认为正在发生的事情是这些行正在运行边缘中列出的次数,但它们是红色的,因为覆盖的某些方面没有受到影响。例如,查看我的屏幕截图,我不确定第 13 行可能是什么,但是将鼠标悬停在红线上会弹出一条消息,解释遗漏的内容。