我正在使用Mocha来测试我的NodeJS应用程序。我无法弄清楚如何使用其代码覆盖功能。我试过谷歌搜索但没有找到任何适当的教程。请帮忙。
答案 0 :(得分:366)
你需要一个额外的库来代码覆盖,你会被强大而简单的istanbul所震撼。在通过mocha测试后,请尝试以下操作:
npm install nyc
现在,只需将命令nyc放在现有测试命令的前面,例如:
{
"scripts": {
"test": "nyc mocha"
}
}
答案 1 :(得分:97)
现在( 2019 ),使用istanbul的首选方式是通过其"最先进的命令行界面" {{ 3}}
首先,使用
将其安装在项目中npm i nyc --save-dev
然后,如果您有基于npm的项目,只需更改nyc文件的scripts
对象内的测试脚本,即可执行package.json测试的代码覆盖率:
{
"scripts": {
"test": "nyc --reporter=text mocha"
}
}
现在运行测试
npm test
你将在你的测试输出之后在控制台中看到这样的表:
只需使用
nyc --reporter=html
而不是text
。现在它将在./coverage/index.html
内生成报告。
伊斯坦布尔支持各种报告格式。只需查看其即可找到对您最有用的内容。
只需为您想要的每种格式添加--reporter=REPORTER_NAME
选项即可。
例如,使用
nyc --reporter=html --reporter=text
你将同时拥有控制台和html报告。
只需在package.json
中添加另一个脚本,并将test
脚本仅保留给您的测试运行器(例如mocha):
{
"scripts": {
"test": "mocha",
"test-with-coverage": "nyc --reporter=text mocha"
}
}
现在运行此自定义脚本
npm run test-with-coverage
使用代码覆盖率运行测试。
如果总代码覆盖率低于90%则失败:
nyc --check-coverage --lines 90
如果至少一个文件的代码覆盖率低于90%,则失败:
nyc --check-coverage --lines 90 --per-file
答案 2 :(得分:19)
Blanket.js也很完美。
npm install --save-dev blanket
在test / tests.js前面
require('blanket')({
pattern: function (filename) {
return !/node_modules/.test(filename);
}
});
运行mocha -R html-cov > coverage.html