Rails3.2.9でオートテスト+初期コマンド諸々まとめ
- Capybara-webkitによる高速インテグレーションテストまとめ - === SANDmark 19106 === beginning stress test
- SporkとRSpec2とautotestとCucumber+Capybara(webkit)とtwitter-bootstrap-railsを使うときのセットアップが長い - === SANDmark 19106 === beginning stress test
上記エントリの情報がとても古くて、
Rails4がリリースされた今となっては改めて更新する必要も無いかな、
と思っていたのですが。
$ gem install rails
でインストールされるバージョンが 3.2.9 だったので、
とりあえずRails4は見送る方向にしました。
しました、はいいのですが、いろいろ事情が変わりすぎてて動かん。
ので、さっくりまとめてしまおうと思います。
まずはテスト環境(改)の構築
おもむろにGemfile:
# mode: ruby source 'https://rubygems.org' gem 'rails', '3.2.9' gem 'bootstrap-sass' gem 'bootswatch-rails' gem 'jquery-rails' gem 'thin' gem 'haml-rails' group :development, :test do gem 'spork' gem 'rspec-rails' gem 'guard-spork' gem 'guard-rspec' gem 'capybara' gem 'capybara-webkit' gem 'factory_girl_rails' gem 'headless' gem 'database_cleaner' gem 'sqlite3' gem 'rails3-generators' gem 'therubyracer' gem 'less-rails' gem 'rb-inotify' end group :development do gem 'twitter-bootstrap-rails' end group :assets do gem 'sass-rails', '~> 3.2.3' gem 'coffee-rails', '~> 3.2.1' gem 'uglifier', '>= 1.0.3' end
いろいろ入っちゃってますがお好みで削除なりしてくだしあ。
例によって bundle install して、次にやることがテスト環境の構築。
といっても、
こっちとほとんど変わりません。
---- 2012-11-28: 追記 ----
CapybaraのDSL設定を忘れていたので適当に追加。
spec/spec_helper.rb:
Spork.prefork do # ... require 'rspec/rails' require 'rspec/autorun' require "factory_girl_rails" # 追記 require "capybara/rspec" # 追記 include Capybara::DSL # 追記 # ...
---- 追記終わり ----
Guardが大幅にバージョンアップしていたので、そこだけ修正です。*1
まずはGuardfileの以下の部分をちょいと修正します:
guard 'rspec', :version => 2, :cli => '--drb' do # 古い方。
guard "rspec", :cli => "--drb" do # 新しい方。
「もうRSpec2にしか対応しねーから!!」という方針を固めたようで、
実際は「:version引数はdeprecatedだよ」という警告が出るだけなんですが、なんとなく。
次に、こんな感じのエラーを吐かれた人のために。
Starting Spork for Test::Unit & RSpec
Couldn't find a supported test framework that begins with 'testunit'Supported test frameworks:
( ) Cucumber
(*) RSpecLegend: ( ) - not detected in project (*) - detected
Using RSpec
Preloading Rails environment
Loading Spork.prefork block...
Spork is ready and listening on 8989!
--> ERROR: Could not start Spork server for Test::Unit & RSpec. Make sure you can use it manually first.
Guard::RSpec is running, with RSpec 2!
Running all specs
これはどうやら ./test/ ディレクトリが存在すると起こるエラーのようで、
単純に
$ rm -r ./test/
としてやると正常に動いてくれました。
次に叩くコマンド(完全に自分用)メモ
あとはTwitterBootstrap用の2行だけだけど。
$ rails g bootstrap:install $ rails g bootstrap:layout application [fluid] $ rake RAILS_ENV=test db:migrate