2013/09/05

Mocha + Istanbulでテストしてコードカバレッジを取得する

JavaScriptでテストとコードカバレッジ取得するためのツールやフレームワークは沢山あるので、最近ちょこちょこJavaScriptに手を出しはじめたばかりの人間にとってどれを使ったらよいのかわからなかったりします。

また、それをするためのボイラープレートコードが必要だったりして、わりと面倒そうだと思って二の足を踏んでいたのですが、GitHubにあったテンプレートを利用したら、簡単にMochaIstanbulでテストとコードカバレッジ取得ができるようになったので、その手順を紹介します。

インストールと実行

Nodeで利用するには、件のテンプレート(nodejs-tdd-boilerplate)を導入するだけです。 これを雛形に利用するとよいでしょう。

$ npm -g install istanbul
$ git clone https://github.com/BryanDonovan/nodejs-tdd-boilerplate.git 
$ cd nodejs-tdd-boilerplate
$ npm install

導入後にそのサンプルアプリをテストしてみましょう。

$ istanbul cover test/run.js

  User model
    create()

       :    

  users/controller.js
    POST /users
      ✓ passes params to User model 
      when model returns an error
        ✓ responds with the error 


  36 passing (386 ms)

=============================================================================
Writing coverage object [/Users/safx/src/Sample/nodejs-tdd-boilerplate/coverage/coverage.json]
Writing coverage reports at [/Users/safx/src/Sample/nodejs-tdd-boilerplate/coverage]
=============================================================================

=============================== Coverage summary ===============================
Statements   : 99.41% ( 169/170 )
Branches     : 92.42% ( 61/66 )
Functions    : 96.15% ( 25/26 )
Lines        : 100% ( 167/167 )
================================================================================

これで、coverageというディレクトリができ、そこにあるHTMLファイルを開けると次のような概要が表示されます。

各ファイルの詳細を見ることもできます。

なお、テストファイルを追加するときは、テストスクリプト名をfoo.acceptance.jsなどにしておく必要があります。 可能なテストタイプはrun.jsに書かれています。

var valid_test_types = ['unit', 'functional', 'acceptance', 'integration']

最小限のファイルのみを利用する

nodejs-tdd-boilerplate自体がテストの対象としているソースがサンプルとしてはわりと大きいです。 個人的には次のようにして、最小限のファイルだけを利用しました。

$ cd my-project && mkdir test
$ cp -r ../nodejs-tdd-boilerplate/{run.js,support} test/
$ cd test && npm install istanbul optimist mocha
$ vi run.js  # 2行目のrequireの場所を変更したり、関数run内のwalk場所を変更したり
$ istanbul -x "support/*" cover run.js

おわりに

テンプレートを導入して、Mocha + Istanbulでテストしてコードカバレッジを取得する方法を紹介しました

CoffeeScriptならIbrikを利用するのもよさそうです。 こちらも機会があれば試してみたいと思います。

関連リンク

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。