テストフレームワークmochaとファイル監視watchrで自動テスト

npm install mocha -g
npm install should

mochaの--watchオプションが期待通り動けば問題ないんだけど、ホットリロード動いてないのでファイル監視はwatchrでやらせることにした。
guardでもよかったんだけど、guardは皆決まりきったサンプル動かしてる人達が多くて、独自な挙動をとらせようとするとRuby詳しくない自分にはwatchrの方が取り回しがよかった。

gem install rb_fsevent watchr

rb_fseventはMacの場合。それ以外の環境だと別のモジュール(ぐぐれ)が必要

たぶんgrowlnotifyが必要
Growl - Downloads

mochaに渡している項目はこんな感じ。

mocha -c --reporter list -r should --ignore-leaks --growl --compilers coffee:coffee-script

(2012/4/9追記)
mochaの仕様変わって --compilers coffee:coffee-script みたいに指定しないとcoffee-scriptが動かなくなってる

    • ignore-leaksしてるのはmochaの仕様かはわからないけど、どのクロージャからも参照されない変数があるとリークしてるよ〜って警告が出る。

watchr保存時に対応したspecファイルを自動で実行されるようにする。フォーマットは*.spec.coffeeみたいな感じ。
プロジェクトのルートで設定ファイルを書く。

spec.watchr

watch("(lib|test)(/.*)+.coffee") {|m|
  fname = m.to_s.split('/')[-1].split('.')[0]+".spec.coffee"
  puts "======= Tests run #{Time.now.strftime('%Y-%m-%d %H:%M:%S')}"

  if File.exist?("test/#{fname}")
    print  `mocha -c --reporter list -r should --ignore-leaks --growl test/#{fname}`
  end
}

Rubyあまり書かないのでうろ覚えな感じで書いた。


ファイルの変更の監視を開始する。

$ watchr spec.watchr

これでlib/Character.coffeeを編集するとtest/Character.spec.coffeeが実行されるようになり幸福が実現した。