tus*_*ath 273 unit-testing code-coverage mocha.js node.js
我正在使用Mocha来测试我的NodeJS应用程序.我无法弄清楚如何使用其代码覆盖功能.我试过谷歌搜索但没有找到任何适当的教程.请帮忙.
Dan*_*ohn 389
你需要一个额外的库来代码覆盖,你会被伊斯坦布尔的强大和轻松所震撼.在让mocha测试通过后,请尝试以下操作:
npm install nyc
Run Code Online (Sandbox Code Playgroud)
现在,只需将命令nyc放在现有测试命令的前面,例如:
{
"scripts": {
"test": "nyc mocha"
}
}
Run Code Online (Sandbox Code Playgroud)
lif*_*foo 119
现在(2019)使用istanbul的首选方式是通过其"最先进的命令行界面" nyc.
首先,将其安装在您的项目中
npm i nyc --save-dev
Run Code Online (Sandbox Code Playgroud)
然后,如果您有一个基于npm的项目,只需更改package.json文件scripts
对象内的测试脚本,即可执行mocha测试的代码覆盖:
{
"scripts": {
"test": "nyc --reporter=text mocha"
}
}
Run Code Online (Sandbox Code Playgroud)
现在运行测试
npm test
Run Code Online (Sandbox Code Playgroud)
您将在测试输出后立即在控制台中看到这样的表格:
只是用
nyc --reporter=html
Run Code Online (Sandbox Code Playgroud)
而不是text
.现在它将在里面生成一份报告./coverage/index.html
.
伊斯坦布尔支持各种报告格式.只需查看其报告库即可找到最适合您的报告库.只需--reporter=REPORTER_NAME
为您想要的每种格式添加一个选项.例如,用
nyc --reporter=html --reporter=text
Run Code Online (Sandbox Code Playgroud)
你将拥有控制台和html报告.
只需在您的脚本中添加另一个脚本,只package.json
留下test
您的测试运行器(例如mocha):
{
"scripts": {
"test": "mocha",
"test-with-coverage": "nyc --reporter=text mocha"
}
}
Run Code Online (Sandbox Code Playgroud)
现在运行此自定义脚本
npm run test-with-coverage
Run Code Online (Sandbox Code Playgroud)
使用代码覆盖率运行测试.
如果总代码覆盖率低于90%则失败:
nyc --check-coverage --lines 90
Run Code Online (Sandbox Code Playgroud)
如果至少一个文件的代码覆盖率低于90%,则失败:
nyc --check-coverage --lines 90 --per-file
Run Code Online (Sandbox Code Playgroud)
Dig*_*rat 20
如果您使用 ESM 模块,则接受的答案 (nyc) 不起作用。
C8似乎是现在最好的解决方案,它利用内置的 NodeJS 功能并利用伊斯坦布尔(与纽约一样,并共享相同的配置文件)。
npm install -g c8
c8 mocha
Run Code Online (Sandbox Code Playgroud)
它将使用 .nycrc 进行配置。我正在使用的示例配置是:
{
"all": true,
"exclude": ["test"],
"output": "reports",
"reporter" : [
"html",
"text"
]
}
Run Code Online (Sandbox Code Playgroud)
(注:另一个问题的答案指向了c8 /sf/answers/4889277781/)
jsa*_*san 19
Blanket.js也很完美.
npm install --save-dev blanket
在你的test/tests.js面前
require('blanket')({
pattern: function (filename) {
return !/node_modules/.test(filename);
}
});
Run Code Online (Sandbox Code Playgroud)
跑 mocha -R html-cov > coverage.html
归档时间: |
|
查看次数: |
114705 次 |
最近记录: |