我正在使用Mocha测试我的NodeJS应用程序。我不知道如何使用它的代码覆盖功能。我试着在谷歌上搜索,但没有找到任何合适的教程。请帮助。
当前回答
你需要一个额外的库来覆盖代码,你会被伊斯坦布尔的强大和简单所震撼。摩卡测试通过后,试试下面的方法:
npm install nyc
现在,简单地把命令nyc放在你现有的test命令前面,例如:
{
"scripts": {
"test": "nyc mocha"
}
}
其他回答
如果您正在使用ESM模块,则接受的答案(nyc)将不起作用。
C8似乎是目前最好的解决方案,它利用了内置的NodeJS功能和伊斯坦布尔(像nyc一样,并共享相同的配置文件)。
npm install -g c8
c8 mocha
它将使用.nycrc进行配置。我使用的示例配置是:
{
"all": true,
"exclude": ["test"],
"output": "reports",
"reporter" : [
"html",
"text"
]
}
(注:我被另一个问题的答案指向了c8 https://stackoverflow.com/a/69846825/1949430)
现在(2023年),使用伊斯坦布尔的首选方式是通过其“最先进的命令行界面”nyc。
设置
首先,将其安装在项目中
npm i nyc --save-dev
然后,如果你有一个基于npm的项目,只需在你的包的scripts对象中更改测试脚本。Json文件执行mocha测试的代码覆盖率:
{
"scripts": {
"test": "nyc --reporter=text mocha"
}
}
Run
现在运行测试
npm test
在测试输出之后,你会在控制台中看到一个这样的表:
定制
Html报告
只使用
nyc --reporter=html
而不是文字。现在它将在./coverage/index.html内生成一个报告。
报告格式
Istanbul支持多种报表格式。只要看看它的报表库就能找到对你最有用的。 只需为每一种格式添加一个——reporter=REPORTER_NAME选项。 例如,用
nyc --reporter=html --reporter=text
您将同时拥有控制台和HTML报告。
不要用npm测试运行覆盖
只需在包中添加另一个脚本。Json,并将测试脚本只留给测试运行器(例如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
js也很完美。
NPM install—save-dev毯
在你的test/tests.js前面
require('blanket')({
pattern: function (filename) {
return !/node_modules/.test(filename);
}
});
运行mocha -R html-cov > coverage.html
你需要一个额外的库来覆盖代码,你会被伊斯坦布尔的强大和简单所震撼。摩卡测试通过后,试试下面的方法:
npm install nyc
现在,简单地把命令nyc放在你现有的test命令前面,例如:
{
"scripts": {
"test": "nyc mocha"
}
}
推荐文章
- npm犯错!代码UNABLE_TO_GET_ISSUER_CERT_LOCALLY
- Access-Control-Allow-Origin不允许Origin < Origin >
- 如何获得所有已注册的快捷路线?
- 你可以为你的组织托管一个私有的存储库来使用npm吗?
- 如何定位父文件夹?
- Gulp命令未找到-安装Gulp后错误
- 在Node.js中写入文件时创建目录
- 如何将自定义脚本添加到包中。Json文件,运行javascript文件?
- 使用child_process。execSync但保持输出在控制台
- SyntaxError:在严格模式下使用const
- 在Node.js中递归复制文件夹
- 如何在node.js中设置默认时区?
- 使用Mockito测试抽象类
- “react-scripts”不被视为内部或外部命令
- 如何正确地读取异步/等待文件?