Rails3でRSPec2とmachinist2
Rails3でRSpec2とmachinist2を使うための下準備。
$ alias r=rails $ r new testapp -T -d mysql $ cd testapp $ vi config/application.rb # Test::Unitにさよなら $ vi Gemfile # RSpec2とmachinist2を追加 $ bundle install $ r g rspec:install $ r g machinist:install $ vi config/application.rb # fixtureの代わりにblueprintを追加するように $ vi ~/.autotest # DBを毎回クリアする
各種ファイルの編集は下記の通り。
Test::Unitにさよなら
-require 'rails/all' +require "active_record/railtie" +require "action_controller/railtie" +require "action_mailer/railtie" +require "active_resource/railtie"
RSpec2とmachinist2を追加
RSpec2+Rails3+autotest環境の構築あたりを参考にやってみた。でもautotestが上手く動かない気がする。
source 'http://rubygems.org' gem 'rails', '3.0.3' gem 'mysql2' group :development, :test do gem 'rspec-rails' gem 'autotest' gem 'webrat' gem 'faker' gem 'machinist', '>= 2.0.0.beta1' end
fixtureの代わりにblueprintを追加するように
以下をconfig/application.rbのclass TestApp::Application内に記述すると、モデルを追加したときにfixtureではなくblueprintの追加をしてくれる。
config.generators do |g| g.fixture_replacement :machinist end
DBを毎回クリアする
~/.autotestに下記を記述してDBを毎回クリアする。じゃないとコケる。 「Rails3 + rspec2 その他もろもろ環境でのautotest周りの設定とか」を参照。
# オートテスト開始時にテストDBをクリアする Autotest.add_hook :initialize do |at| system("rake db:test:prepare") next false end # ファイル更新時にテストDBをクリアする Autotest.add_hook :ran_command do |at| system("rake db:test:prepare") next false end