RailsでJavascript/CoffeeScriptをテストするときの決定版(にしたい)!Konacha
というわけでKonachaです。https://github.com/jfirebaugh/konacha
なにこれ、粉茶?
JavascriptのテスティングフレームワークとしてはJasmineやらMochaあたりがメジャーどころのようだけど、セットアップが難しかったりして「これだ!」というものがなかった。個人的には。
で、今回、よーし、お父さんCoffeeScript書いちゃうぞー!というタイミングにあたって、もう一回いろいろ探してみたところ、これが一番スジがいいっぽかった。
KonachaはRailsでMochaとchaiを使いやすくしたGemらしい。Mochaとchaiは使ったことなかったけど、公式を5秒ほどみたところ、nodeでうごくrspecライクなテスティングフレームワークということでJasmineとかとあんまかわらないんじゃないかと推測。chaiはマッチャーのライブラリのようなのてHamcrestみたいなもんかな。
インストール
group :test, :development do gem 'konacha' end
bundle installでおわり。
使い方
テストを作る
- spec/javascriptsディレクトリを作る
- その下に_spec(もしくは_test)サフィックスをつけたjs or CoffeeScriptテストファイルを作る。以下、ここでは全部CoffeeScriptの例でいく
- 例)
# hello_konacha_spec.js.coffee #= require application describe "HelloKonacha#sayHello", -> it "says 'Hello World!'", -> konacha = new HelloKonacha() konacha.sayHello().should.eql("Hello World!") # hello_konacha.js.coffee $ -> class window.HelloKonacha sayHello: () -> "Hello World!"
このとおり、RSpecライクにテストが書ける。ちなみに15分くらいハマったポイントがあって、shouldとeqlは離しちゃだめだから。ドットでつながってるから。RSpecの先入観で離して書いてて、テスト通らなくて焦ったから。
テストを動かす
- serverを起動する方法
- 開発中はこの方法がオススメ
$ bundle exec rake konacha:serve Your tests are here: http://localhost:3500/ [2013-01-22 13:22:49] INFO WEBrick 1.3.1 [2013-01-22 13:22:49] INFO ruby 1.9.3 (2012-11-10) [x86_64-darwin12.2.1] [2013-01-22 13:22:49] INFO WEBrick::HTTPServer#start: pid=30777 port=3500
-
- ブラウザでhttp://localhost:3500/ にアクセスするとテストが動く。リロードすれば再実行。
- http://localhost:3500/array_sum_spec とか http://localhost:3500/models とかアクセスURLを変えると、部分的にテストを実行できる
- テストはspecファイルごと(たぶん)にiframe内で動くので、タグ全体をテストに使うことができる。タグ要素はテストごとにリセットされる。
- javascriptコンソールでコードを動かすときは、対象のiframeを選択するのを忘れないようにすること。
- ここのRunningの章を見ればたぶんわかる。https://github.com/jfirebaugh/konacha
- コマンドラインから起動する方法
$ bundle exec rake konacha:run
-
- ぼくんとこの場合、Firefoxが実際に立ち上がって、そして自動的に終了していった。。
- ブラウザがないサーバで実行したらどうなるんだろう?
- その辺は今回は割愛。Jenkinsにのっけるときに調べるのでまた次回。
- ci_reporterとかguard-konachaとかもあるらしいけど今んとこ興味ないので割愛。
他にもヘルパーとかあるけど、今回はコレで終わり。
確かにあっさり動いたので、まずはテストを書くことに慣れてみようと思う。
追記)いいスライド見つけた。
http://sssslide.com/www.slideshare.net/markykang/testing-javascriptcoffeescript-with-mocha-and-chai