gruntでヘッドレステストする

準備

まず、grunt-jasmine-runnerをインストールします。

$npm install grunt-jasmine-runner

次に、phantomjsにパスを通します。homebrewで持ってくるか公式サイトでダウンロードしてきましょう。

$brew install phantomjs

grunt.js内の記述は以下の通りです。

jasmine: {
  src: [
    'war/js/lib/jquery-1.8.3.js',
    'war/js/lib/spine/spine.js',
    'war/js/lib/**/*.js',
    'war/js/model.js',
    'war/js/templates.js',
    'war/js/view.js',
    'war/js/controller.js',
    'war/js/*.js'
  ],
  specs: 'target/js.test/*Spec.js',
  server: {
    port: 3103
  },
  timeout: 10000
}

jasmineタスクには主にsrc, specs, helpersオプションがあります。srcはテスト対象のファイル、specsはテストファイル、helpersはjasmine-jqueryみたいなテスト時のヘルプライブラリを記述するところです。srcオプションには*.jsだけ記述してもいいのですが、読み込まれる順番によってエラーが出てしまう(jQueryがないなど)ため依存関係にあるファイルを先に指定しています(requrejsもオプションで使える)。

実行

$grunt jasmine

を実行するとポート3103でサーバが立ち上がりテストが行われ、コマンドラインに結果が出力されます。もし実行結果をブラウザで見たい場合は代わりに

$grunt jasmine-server

を実行してください。またwatchタスクにjasmineタスクを追加しておけばファイルの更新のたびテストを実行できます。