web-dev-qa-db-ja.com

Mochaによるコードカバレッジ

私は自分のNodeJSアプリケーションをテストするためにMochaを使っています。コードカバレッジ機能の使い方を理解することができません。グーグルしようとしましたが、適切なチュートリアルが見つかりませんでした。助けてください。

255
tusharmath

コードカバレッジのために追加のライブラリが必要です、そしてあなたはどれほど強力で簡単であるかによってあなたは吹き飛ばされるでしょう istanbul です。モカテストに合格したら、次のことを試してください。

npm install nyc

今、あなたの既存のテストコマンドの前に単にコマンドnycを置きなさい、例えば:

{
  "scripts": {
    "test": "nyc mocha"
  }
}
367
Dan Kohn

さて、(2019)を使用するのに好ましい方法 istanbul は、そのを使用することです。コマンドラインインタフェース "nyc

セットアップ

まず、プロジェクトにそれをインストールします。

npm i nyc --save-dev

次に、npmベースのプロジェクトがある場合は、 mocha テストのコードカバレッジを実行するために、 package.json ファイルのscriptsオブジェクト内のテストスクリプトを変更します。

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

実行する

テストを実行しましょう

npm test

テストが出力された直後に、コンソールに次のようなテーブルが表示されます。

Istanbul Nyc Mocha code coverage

カスタマイズ

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 

少なくとも1つのファイルのコードカバレッジが90%未満の場合は失敗します。

nyc --check-coverage --lines 90 --per-file
100
lifeisfoo

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を実行する

19
jsan