NodeJSアプリケーションのテストにMochaを使用しています。コードカバレッジ機能の使い方を理解できません。私はグーグルで試しましたが、適切なチュートリアルが見つかりませんでした。助けてください。
NodeJSアプリケーションのテストにMochaを使用しています。コードカバレッジ機能の使い方を理解できません。私はグーグルで試しましたが、適切なチュートリアルが見つかりませんでした。助けてください。
回答:
コードカバレッジには追加のライブラリが必要であり、イスタンブールがいかに強力で簡単であるかに驚かされます。モカテストに合格したら、次のことを試してください。
npm install nyc
ここで、既存のテストコマンドの前にコマンドnycを配置するだけです。次に例を示します。
{
"scripts": {
"test": "nyc mocha"
}
}
istanbul.cmd cover C:\Users\{UserName}\AppData\Roaming\npm\node_modules\mocha\bin\_mocha
$(npm bin)
標準的なショートカットです./node_modules/.bin/
、とistanbul/lib/cli.js
にエイリアスされたistanbul
binフォルダに。そこでここでは短いコマンドがあります:$(npm bin)/istanbul cover $(npm bin)/_mocha -- --ui bdd -R spec -t 5000
istanbul cover node_modules/mocha/bin/_mocha -- -R spec
現在(2020年)istanbulを使用する好ましい方法は、「最先端のコマンドラインインターフェース」 nycを使用することです。
まず、プロジェクトにインストールします
npm i nyc --save-dev
あなたはNPMベースのプロジェクトを持っている場合はその後、ちょうど内部のテストスクリプトを変更するscripts
あなたのオブジェクトpackage.jsonのあなたのコードカバレッジを実行するために、ファイルモカテスト:
{
"scripts": {
"test": "nyc --reporter=text mocha"
}
}
テストを実行します
npm test
テストの出力直後に、コンソールに次のようなテーブルが表示されます。
使うだけ
nyc --reporter=html
の代わりにtext
。これで、内部でレポートが作成され./coverage/index.html
ます。
イスタンブールは、幅広いレポート形式をサポートしています。ちょうどその時に見てレポートライブラリあなたのために最も有用見つけること。--reporter=REPORTER_NAME
必要なフォーマットごとにオプションを追加するだけです。たとえば、
nyc --reporter=html --reporter=text
コンソールとhtmlレポートの両方が表示されます。
に別のスクリプトを追加して、テストランナー(例:mocha)だけにスクリプトをpackage.json
残しtest
ます。
{
"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
--reporter=html
有効にしていますが、htmlファイルは常に空です。カバーされていないブロックやカバーされている%などについては何も表示されません。表のヘッダーだけです
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
istanbul cover node_modules/mocha/bin/_mocha
。