GruntでJasmineを使ったHeadlessなユニットテスト

GruntではHeadlessなユニットテストを行うための Qunit があります。しかし、個人的にはRSpec風に記述できる Jasmine の方が読みやすいので、Jasmineでのユニットテスト環境を構築してみました。

まず、Grunt Jasmine runner をインストール

[shell]
$ cd /your-project
$ npm install grunt
$ npm install grunt-jasmine-runner
[/shell]

PhantomJSがない場合はBrewでいれておく

[shell]
$ brew install phantomjs
[/shell]

自身のgrunt.jsファイルに追加

[js]
// Jasmine
jasmine: {
// テストするためのソースファイル
src : ‘path/to/project/*.js’,

// ヘルパーファイル
helpers : ‘specs/helpers/*.js’,

// ジャスミンのテストが含まれているspecファイル
specs : ‘specs/*/spec.js’,

// テストが破棄されるまでのタイムアウト時間
timeout : 10000,

// テンプレート
template : ‘path/to/project/custom.tmpl’,

// ポート番号(デフォルト8888)
port :8686

// junit xmlの出力先
junit : {
output : ‘junit/‘
},

// phantomjsのオプション
phantomjs : {
‘ignore-ssl-errors’ : true
}
}

grunt.loadNpmTasks(‘grunt-jasmine-runner’);

[/js]

という感じで、テストを走らせてみる

[shell]
$ grunt jasmine

$ Running "jasmine" task
Testing jasmine specs via phantom
3 specs, 0 failures in 0.012s.
[/shell]

また、ブラウザで実行するときは
[js]
‘jasmine-server’ : {
// デフォルトのブラウザを自動で開く(デフォルトtrue)
browser :true
} [/js]

をgrunt fileに追加して

[shell]
$ grunt jasmine-server
Running "jasmine-server" task
Run your tests at http://127.0.0.1:8888/_SpecRunner.html
[/shell]

で実行できます。

watchオプションでファイルの保存を監視をしているなら、タスクに加えておけばテストも自動化できます。
[js]
watch: {
coffee: {
files: [
‘path/to/project/*.js’
],
tasks: ‘clean:js coffee jasmine’
}
} [/js]

という感じすれば、ファイル保存の後に、coffeeコンパイルそしてテスト という感じに自動化されて良さそうですね。

Comments