Mocha的代码覆盖率

node.js Node.js

十三Davaid

2020-03-19

我正在使用Mocha测试我的NodeJS应用程序。我不知道如何使用其代码覆盖功能。我尝试使用Google搜索,但没有找到任何合适的教程。请帮忙。

第2294篇《Mocha的代码覆盖率》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

2个回答
ProGreen 2020.03.19

现在(2020年),使用伊斯坦布尔的首选方式是通过其“最新的命令行界面” nyc

设定

首先,使用

npm i nyc --save-dev

然后,如果您有一个基于npm的项目,只需更改package.json文件scripts对象中的测试脚本即可执行您的Mocha测试的代码覆盖

{
  "scripts": {
    "test": "nyc --reporter=text mocha"
  }
}

现在运行测试

npm test

在测试输出之后,您将在控制台中看到一个这样的表:

伊斯坦堡纽约摩卡代码覆盖率

客制化

HTML报告

只需使用

nyc --reporter=html

代替text现在它将在内部生成报告./coverage/index.html

报告格式

伊斯坦堡支持多种报告格式。只需查看其报告库即可找到最有用的报告只需--reporter=REPORTER_NAME为所需的每种格式添加一个选项。例如,

nyc --reporter=html --reporter=text

您将同时拥有控制台和html报告。

不要使用npm测试进行覆盖

只需在您的脚本中添加另一个脚本,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
达蒙小胖 2020.03.19

您需要一个额外的库来覆盖代码,而伊斯坦布尔的强大和便捷将让您大吃一惊通过Mocha测试后,请尝试以下操作:

npm install nyc

现在,只需将命令nyc放在您现有的测试命令之前,例如:

{
  "scripts": {
    "test": "nyc mocha"
  }
}

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android