十三Davaid2020-03-19
我正在使用Mocha测试我的NodeJS应用程序。我不知道如何使用其代码覆盖功能。我尝试使用Google搜索,但没有找到任何合适的教程。请帮忙。
现在(2020年),使用伊斯坦布尔的首选方式是通过其“最新的命令行界面” nyc。
首先,使用
npm i nyc --save-dev
然后,如果您有一个基于npm的项目,只需更改package.json文件scripts对象中的测试脚本即可执行您的Mocha测试的代码覆盖:
scripts
{ "scripts": { "test": "nyc --reporter=text mocha" } }
现在运行测试
npm test
在测试输出之后,您将在控制台中看到一个这样的表:
只需使用
nyc --reporter=html
代替text。现在它将在内部生成报告./coverage/index.html。
text
./coverage/index.html
伊斯坦堡支持多种报告格式。只需查看其报告库即可找到最有用的报告。只需--reporter=REPORTER_NAME为所需的每种格式添加一个选项。例如,
--reporter=REPORTER_NAME
nyc --reporter=html --reporter=text
您将同时拥有控制台和html报告。
只需在您的脚本中添加另一个脚本,package.json然后仅将脚本保留test给测试运行程序即可(例如,mocha):
package.json
test
{ "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
您需要一个额外的库来覆盖代码,而伊斯坦布尔的强大和便捷将让您大吃一惊。通过Mocha测试后,请尝试以下操作:
npm install nyc
现在,只需将命令nyc放在您现有的测试命令之前,例如:
{ "scripts": { "test": "nyc mocha" } }
Newest Answer
现在(2020年),使用伊斯坦布尔的首选方式是通过其“最新的命令行界面” nyc。
设定
首先,使用
然后,如果您有一个基于npm的项目,只需更改package.json文件
scripts
对象中的测试脚本即可执行您的Mocha测试的代码覆盖:跑
现在运行测试
在测试输出之后,您将在控制台中看到一个这样的表:
客制化
HTML报告
只需使用
代替
text
。现在它将在内部生成报告./coverage/index.html
。报告格式
伊斯坦堡支持多种报告格式。只需查看其报告库即可找到最有用的报告。只需
--reporter=REPORTER_NAME
为所需的每种格式添加一个选项。例如,您将同时拥有控制台和html报告。
不要使用npm测试进行覆盖
只需在您的脚本中添加另一个脚本,
package.json
然后仅将脚本保留test
给测试运行程序即可(例如,mocha):现在运行此自定义脚本
运行具有代码覆盖率的测试。
如果代码覆盖率低,则强制测试失败
如果总代码覆盖率低于90%,则失败:
如果至少一个文件的代码覆盖率低于90%,则失败: