我在Ubuntu 14.04 LTS上使用带有mocha(版本2.4.5_6)和meteor版本1.4.4.1的流星覆盖包(版本1.1.4) . 我已经能够生成非常漂亮的测试覆盖率报告,但似乎对于客户端测试有些不对劲 . 为了将覆盖数据发送到localhost:3000 / coverage,我创建了一个名为 sendCoverage()
的函数,我在.tests.js文件中导入:
export const sendCoverage = function sendCoverage() {
Meteor.sendCoverage(function(stats,err) {console.log(stats,err);});
};
我在一段摩卡测试后调用此函数:
after (function () {
sendCoverage();
});
现在,这会在我的localhost:3000 / coverage页面中生成测试覆盖率报告,但好像它没有正确显示覆盖率 . 例如,我看到一些语句被执行,但是以红色突出显示并标记为未覆盖 . 例如:
似乎语句分别执行了11次和12次 . 但是,它们没有被标记为被覆盖,在我的报告中,声明覆盖率的百分比反映了这一点 .
有谁知道我可能做错了什么和/或有客户端代码覆盖和流星覆盖包的经验?
谢谢!
Post-solution edit
好像我现在已经开始工作了 . Codacy上的百分比与我的html报告中的百分比相匹配 . 仔细观察HTML报告,看起来覆盖数字毕竟是正确的 . 只是向下钻取显示奇怪的行为 . 所以,结论是它毕竟有用,但它需要Codacy _2885330的答案,并将这些输出到Codacy,Codecov或SonarQube等外部服务 .
谢谢Serut的输入!
1 回答
我是流星报道的作者 . 很高兴看到该程序包在您的应用程序上运行良好!
首先,我没有创建一个带有保存覆盖范围的函数的utils . 您可以通过使用(假设
Meteor.sendCoverage
始终存在于测试中)来保存每个文件的覆盖范围 .另一方面,您不应在测试文件中编写任何代码以节省覆盖率 . 测试运行器可以为你做这样的事情I added on the spacejam fork . 您可以尝试使用serut/spacejam导出
html
和lcov
报告 .我认为
lcov
格式比html
报告更可靠 . 如果我看一些coverage report of the client side code from meteor-coverage,一切看起来都很连贯 . 尝试将lcov文件发送到Sonar,Codecov或Codacy等代码质量平台 . 我希望它能解决线路问题,这可能与伊斯坦布尔及其html报告生成有关 .