代码覆盖与摩卡

我正在使用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