&tag(factory_girl); *目次 [#l6599844] #contents *参考情報 [#of03ed93] -[[thoughtbot/factory_girl · GitHub:https://github.com/thoughtbot/factory_girl]]…日本語ブログは断片的な情報が多いので、公式サイトをまず確認すること。GETTING_STARTEDがとても親切にかかれてある。 *そもそも使うメリットがあるのか? [#s07b94fa] -[[FactoryGirlをRuby on Railsで使うときの覚書 - 発声練習:http://d.hatena.ne.jp/next49/20130524/p1]]を読めば、ActiveRecord単体で全く同じようなことができそうなことがわかる。とりあえず短くかけるので便利くらいの意識でいいかも。 *導入 [#td1b16f2] **Gemfileを編集 [#x241adc7] -rails3-generatorsはモデル生成時に、factory_girlの定義も同時に作ってくれる。 #pre{{ group :test do gem 'factory_girl_rails' gem 'rails3-generators' end }} **モデル定義 [#n39a27e4] -FactoryGirl.defineを使ってモデルを定義する。この場合Userテーブルのモデルを定義したことになる。 #pre{{ require 'factory_girl' FactoryGirl.define do factory :user do name 'John Doe' date_of_birth { 21.years.ago } end end }} -定義するファイルは以下のどれでもいいらしい。 #pre{{ test/factories.rb spec/factories.rb test/factories/*.rb spec/factories/*.rb }} **使う [#d32044d6] -例えば次のように呼び出すと、上記userモデルのインスタンスをテスト用データベースに保存した上で返してくれる。 #pre{{ FactoryGirl.create(:user) }} **データベースの準備 [#h2a7f935] -実際にrspecなどで使う場合事前にデータベースの準備が必要。 bundle exec rake db:test:prepare *Tips [#o6d1d8a5] **シンプルに呼び出せるようにする。 [#c176dfa4] -以下のようにするとFactoryGirl.createがcreateだけで呼び出せるようになる。 #pre{{ RSpec.configure do |config| config.include FactoryGirl::Syntax::Methods end }} **Sporkを使っているときにFactoryGirlをリロードする。 [#z8e70483] -spec_helper.rbに以下を追加する。 #pre{{ Spork.each_run do # This code will be run each time you run your specs. FactoryGirl.reload end }} **モデル保存時のValidationをバイパスする [#gc2fb55d] -[[Rspec - FactoryGirlでModel作成時のValidationをスキップする方法 - Qiita [キータ]:http://qiita.com/jnchito/items/977018233568ccd83808]]