訳注
これは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に表示されます。