Skip to content

Latest commit

 

History

History
183 lines (133 loc) · 5.89 KB

code-coverage.md

File metadata and controls

183 lines (133 loc) · 5.89 KB

訳注

これはcode-coverage.mdの日本語訳です。こちらがAVAのmasterブランチとの差分のリンクになります(このリンクをクリックして、code-coverage.mdに変更点が見当たらなければ、この翻訳が最新であることを意味します)。


コードカバレッジ

AVAはテストファイルの実行を隔離された環境で行うので、コードカバレッジにistanbulを使うことはできません。代わりに、基本的にはサブプロセスのサポートがあるistanbulであるnycで代用できます。なので、まずこれをインストールする必要があります:

npm install nyc --save-dev

セットアップ

まずNYCをインストールします:

$ npm install nyc --save-dev

続いて、.nyc_outputcoverageディレクトリを.gitignoreに追加します。

.gitignore:

node_modules
coverage
.nyc_output

ES5のカバレッジ

ES5をカバーするには、単純にテストスクリプトの先頭にnycを追加します。このnpmスクリプトがコードカバレッジとテストを扱います:

{
	"scripts": {
		"test": "nyc ava"
	}
}

これで完了です!

HTMLのカバレッジレポートを作りたい場合やCoverallsにカバレッジデータをアップロードしたい場合、以下のセクションを参照してください。

ES2015のカバレッジ

製造段階のコードをトランスパイルするのにBabelを使用している場合は、もう少し複雑になります。ここでは、いくつかのステップに分けておきました。

Babelの設定

まず、babelの設定が必要です。下は単なる例です。後で各自の必要に応じて修正をしてください。

package.json:

{
	"babel": {
		"presets": ["es2015"],
		"plugins": ["transform-runtime"],
		"ignore": "test.js",
		"env": {
			"development": {
				"sourceMaps": "inline"
			}
		}
	}
}

上の例で2つの注目するべきことがあります。

  1. AVAがすでにテストをトランスパイルしているので、テストファイルは無視します。

  2. 開発用にインラインでソースマップを設定しています。これは適切にカバレッジを生成する上で重要なことです。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

Babelのrequire hookを使うには、package.jsonのAVAの設定のrequirebabel-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"]
	}
}

HTMLレポート

NYCはjsonカバレッジファイルをプロセス毎に.nyc_ouputディレクトリに作ります。

読みやすいHTMLレポートにまとめるには次のようにします:

$ ./node_modules/.bin/nyc report --reporter=html

または、より少ないタイプで済ませるためにnpmスクリプトに変換してください:

{
	"scripts": {
		"report": "nyc report --reporter=html"
	}
}

これでcoverageディレクトリにHTMLファイルを出力します。

ホストされたカバレッジ

Travis CIとCoveralls

最初に、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に表示されます。