Node.js with TypeScriptのCode Coverageを計測する
概要
Node.js with TypeScriptでcode coverageを計測できるようにしたので、その導入手順について書きます。
NYCのセットアップ
はじめにNYCのセットアップします。 NYCとはIstanbulのコマンドラインツールで、Istanbulとはcode coverageを計測してくれるツールです。
まずはnyc
とts-node
をinstallします。
$ npm i -D nyc ts-node mocha
次にnyc
のtaskをpackage.json
のscriptに追加します。今回はtestファイルをtest directory配下に置いています。
// package.json { ... "scripts": { "test": "nyc mocha test/*" }, ... }
次にnyc
のconfigをpackage.json
に設定します。必要に応じて設定を変更してください。
// package.json { ... "nyc": { "include": [ "lib/**/*.ts" ], "extension": [ ".ts" ], "require": [ "ts-node/register" ], "reporter": [ "text", "text-summary", "html" ], "sourceMap": true }, ... }
opn-cliの設定(オプション)
coverage計測後、ぱっと見れるようにopn-cli
の設定も一緒にpackage.json
に追加します。
$ npm i -D opn-cli
// package.json { ... "scripts": { "test": "nyc mocha test/*", "open:cov": "opn coverage/index.html" }, ... }
codecovの設定(オプション)
codecovで可視化したいのでcodecov
の設定も追加します。codecov
はCircleCIから自動的に走らせています。
$ npm i -D codecov
// package.json { ... "scripts": { "test": "nyc mocha test/*", "codecov": "nyc report --reporter=lcovonly && codecov", "open:cov": "opn coverage/index.html" }, ... }
実行
後はnpm testを実行すると結果を見ることができます。nyc
のHTMLはbranchの詳細まで見れるのでとても便利です。
$ npm test
$ npm run open:cov
まとめ
CodeのCoverageが全てではないですが、テストを書く習慣・目標値の設定としてはとても良い指標だと思います。 これに加え、質の良いテストがかけるように心がけていきたいです。
ちなみにNYCはNew York Cityだそうです。
リンク
https://istanbul.js.org/ https://github.com/istanbuljs/nyc http://azimi.me/2016/09/30/nyc-mocha-typescript.1.html