&tag(factory_girl);
*目次 [#l6599844]
#contents

*関連ページ [#m7a487ea]
-[[./Rails3]]
-[[./Rails4]]
*参考情報 [#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]]



トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS