代码覆盖与摩卡
我正在使用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