代码覆盖与摩卡
我正在使用Mocha来testing我的NodeJS应用程序。 我无法弄清楚如何使用它的代码覆盖function。 我试图用Googlesearch,但没有find任何适当的教程。 请帮忙。
你需要一个额外的代码覆盖库,你将被伊斯坦布尔的强大和简单所迷惑 。 在你的摩卡testing通过后,尝试以下方法:
npm install nyc
现在,只需将命令nyc放在您现有的testing命令之前,例如:
{ "scripts": { "test": "nyc mocha" } }
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
现在(2017年)使用istanbul的首选方式是通过其“先进的命令行界面” nyc 。
build立
首先,将其安装在您的项目中
npm i nyc --save-dev
然后,如果您有一个基于npm的项目,只需更改您的package.json文件的scripts
对象内的testing脚本,以执行您的mochatesting的代码覆盖范围:
{ "scripts": { "test": "nyc --reporter=text mocha" } }
跑
现在运行你的testing
npm test
你会在你的控制台中看到一个如下所示的表格:
定制
Html报告
只是使用
nyc --reporter=html
而不是text
。 现在它会在./coverage/index.html
里面生成一个报告。
报告格式
伊斯坦布尔支持广泛的报告格式。 只要看看它的报告库 ,find对你最有用的。 只需为每种格式添加--reporter=REPORTER_NAME
选项即可。 例如,用
nyc --reporter=html --reporter=text
你将拥有控制台和html报告。
不要用npmtesting来运行覆盖
只需在package.json
添加另一个脚本,并将test
脚本仅保留在test
(例如mocha)中:
{ "scripts": { "test": "mocha", "test-with-coverage": "nyc --reporter=text mocha" } }
现在运行这个自定义脚本
npm run test-with-coverage
运行代码覆盖率的testing。
如果代码覆盖率低,强制testing失败
如果总代码覆盖率低于90%,则失败:
nyc --check-coverage --lines 90
如果至less一个文件的代码覆盖率低于90%,则失败:
nyc --check-coverage --lines 90 --per-file