先日 Evergreen を導入したけど
Evergreen は今メンテされてないってコメントで教えてもらった。確かに、README よく見たら書いてあるし…。完全に見落としてた。不覚。
README のリンク先、Google グループのスレッドでは Konacha っていう Rails エンジンが勧められていた。コメントで教えてもらったのもコレ。
Evergreen 入れたばかりだけど、Konacha に移行しよう。
Konacha をインストール
Gemfile に
group :development, :test do gem "konacha" gem "capybara-webkit" end
を記述して、
bundle
を実行してインストール。
Headless テストも試すから、capybara-webkit もインストールしている。
Konacha の設定ファイルを作成
RAILS_ROOT/config/initializer/konacha.rb を作成。
# coding: utf-8 Konacha.configure do |config| config.spec_dir = "spec/javascripts" config.driver = :webkit config.stylesheets = %w(application) end if defined?(Konacha)
JavaScript ドライバに webkit を指定している。capybara-webkit と組み合わせることで、Headless テストが可能。
余談だけど、README に「PhantomJS をインストールしたらドライバに poltergeist が使える」みたいなことが書かれているから試してみたら「poltergeist はサポートしていない」っていうエラーが発生した。やり方間違ってる?今回はパス。
JavaScript のスペックを記述
Konacha で実行できるように、JavaScript のスペックを修正する。スペックファイルは RAILS_ROOT/spec/javascripts 下に作成。
//= require application describe("List", function() { describe("toJSON", function() { it("idとnameが格納されている", function() { var list = new App.Models.List({id:100, name:"foo"}); var json = list.toJSON(); json.id.should.equal(100); json.name.should.equal("foo"); }); }); });
Rails の asset pipeline に対応しているので、require で外部の JavaScript ファイルを読み込める。
Evergreen は Jasmine だったのに対し、Konacha では Mocha なので、Mocha を使ったテストに修正した。といっても Jasmine と大して変わってないけど。
Jasmine のアサーションは使えないけど、代わりに chai というアサーションライブラリが使えるので、それにも対応。
テストを実行
まずはブラウザでテスト。
bundle exec rake konacha:serve
を実行すると開発サーバーが起動する。
http://localhost:3500/ をブラウザで表示すると、テストが実行された。
デザインは超シンプル。
続いて、Headless テストも実行してみる。
bundle exec rake konacha:run
Konacha でもちゃんと端末上でテストが完了した。
まとめ
Evergreen の README をちゃんと読んでなかったばかりに、Evergreen 導入してすぐ Konacha に移動することになってしまった。
Konacha でも Evergreen 同様、ブラウザで JavaScript のテストが実行できたし、Headless テストもできた。
Rails 周辺は進化が早いので、Evergreen がメンテされていない以上、Konacha を使った方がいいね。