訳注
これはcode-coverage.mdの日本語訳です。こちらがAVAのmasterブランチとの差分のリンクになります(このリンクをクリックして、code-coverage.mdに変更点が見当たらなければ、この翻訳が最新であることを意味します)。
AVAはテストファイルの実行を隔離された環境で行うので、コードカバレッジにistanbulを使うことはできません。代わりに、基本的にはサブプロセスのサポートがあるistanbulであるnycで代用できます。なので、まずこれをインストールする必要があります:
npm install nyc --save-dev
まずNYCをインストールします:
$ npm install nyc --save-dev
続いて、.nyc_outputとcoverageディレクトリを.gitignoreに追加します。
.gitignore:
node_modules
coverage
.nyc_output
ES5をカバーするには、単純にテストスクリプトの先頭にnycを追加します。このnpmスクリプトがコードカバレッジとテストを扱います:
{
"scripts": {
"test": "nyc ava"
}
}これで完了です!
HTMLのカバレッジレポートを作りたい場合やCoverallsにカバレッジデータをアップロードしたい場合、以下のセクションを参照してください。
製造段階のコードをトランスパイルするのにBabelを使用している場合は、もう少し複雑になります。ここでは、いくつかのステップに分けておきました。
まず、babelの設定が必要です。下は単なる例です。後で各自の必要に応じて修正をしてください。
package.json:
{
"babel": {
"presets": ["es2015"],
"plugins": ["transform-runtime"],
"ignore": "test.js",
"env": {
"development": {
"sourceMaps": "inline"
}
}
}
}上の例で2つの注目するべきことがあります。
-
AVAがすでにテストをトランスパイルしているので、テストファイルは無視します。
-
開発用に
インラインでソースマップを設定しています。これは適切にカバレッジを生成する上で重要なことです。Babelの設定のenvセクションを使うことで製造段階でのソースマップの生成を無効にすることが出来ます。
製造段階のコードにソースマップをインラインで記述したいということはありそうにもないので。ビルドスクリプトには代わりとなる環境変数を指定すべきです。:
package.json
{
"scripts": {
"build": "BABEL_ENV=production babel --out-dir=dist index.js"
}
}注意:
BABEL_ENV=productionはWindowsでは使えないので、setを使わなければなりません。(set BABEL_ENV=production). クロスプラットフォームビルドが必要であれば、cross-envを確認してください。
このビルドスクリプトは本当にAVAと関係がほとんどが無く、どのようにしてAVAと互換性のあるようにBabelのenvを設定するかを示した、ただのデモであることに注意してください。
Babelのrequire hookを使うには、package.jsonのAVAの設定のrequireにbabel-core/registerを追加してください。
{
"ava": {
"require": ["babel-core/register"]
}
}注記: コマンドラインからrequire hookを設定することもできます: ava --require=babel-core/register。けれどもpackage.jsonに設定することで、このフラグを繰り返しタイプすることを防ぐことが出来ます。
上記のステップをまとめるとpackage.jsonは次のようになります:
{
"scripts": {
"test": "nyc ava",
"build": "BABEL_ENV=production babel --out-dir=dist index.js"
},
"babel": {
"presets": ["es2015"],
"plugins": ["transform-runtime"],
"ignore": "test.js",
"env": {
"development": {
"sourceMaps": "inline"
}
}
},
"ava": {
"require": ["babel-core/register"]
}
}NYCはjsonカバレッジファイルをプロセス毎に.nyc_ouputディレクトリに作ります。
読みやすいHTMLレポートにまとめるには次のようにします:
$ ./node_modules/.bin/nyc report --reporter=html
または、より少ないタイプで済ませるためにnpmスクリプトに変換してください:
{
"scripts": {
"report": "nyc report --reporter=html"
}
}これでcoverageディレクトリにHTMLファイルを出力します。
最初に、coverallsでリポジトリを認証する必要があります。それが完了したら、開発時の依存モジュールとしてcoverallsを追加してください。
npm install coveralls --save-dev
そして.travis.ymlに以下の内容を追加してください。
after_success:
- './node_modules/.bin/nyc report --reporter=text-lcov | ./node_modules/.bin/coveralls'
カバレッジレポートはCIサービスが完了した後すぐにcoverallsに表示されます。