Answers:
您需要一个额外的库来覆盖代码,而伊斯坦布尔的强大和便捷将让您大吃一惊。通过Mocha测试后,请尝试以下操作:
npm install nyc
现在,只需将命令nyc放置在现有测试命令的前面,例如:
{
"scripts": {
"test": "nyc mocha"
}
}
istanbul.cmd cover C:\Users\{UserName}\AppData\Roaming\npm\node_modules\mocha\bin\_mocha
$(npm bin)
是的规范快捷方式./node_modules/.bin/
,并且在bin文件夹中istanbul/lib/cli.js
具有别名istanbul
。所以这是一个较短的命令:$(npm bin)/istanbul cover $(npm bin)/_mocha -- --ui bdd -R spec -t 5000
istanbul cover node_modules/mocha/bin/_mocha -- -R spec
现在(2020年),使用伊斯坦布尔的首选方法是通过其“最先进的命令行界面” nyc。
首先,使用
npm i nyc --save-dev
然后,如果您有一个基于npm的项目,只需更改package.json文件scripts
对象中的测试脚本即可执行您的Mocha测试的代码覆盖:
{
"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
--reporter=html
启用了该功能,但html文件始终为空,未显示有关未发现的块或覆盖的百分比等信息,只是表头
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
istanbul cover node_modules/mocha/bin/_mocha
。