fixturesが担っていたテストデータのところにfactory_girlを使うイメージ?
複数テーブルにまたがるデータを定義するときにfixturesより格段にやりやすいみたい。
その利点はまだ実感できてないけどとりあえず使い方
環境
Rails3,bundle全盛だけどRails2の話
- Rails2系
- factory_girl 1.2.4
factory_girlインストール
$ gem install factory_girl
Rails2系だとこれではだめ。現在の最新版1.3.3がインストールされるがRails2系は1.2.4を使うようにREADMEに書いてあった。
If you want to use factory_girl with Rails versions prior to Rails 3, use version 1.2.4.
$ gem install factory_girl -v 1.2.4
使うための設定
config/enviroments/test.rb
#追記 config.gem "factory_girl", :version => '1.2.4'
Rails2系(Rails2.1から?)で使えるconfig.gemで定義するとrequireまでやってくれるので便利
## enviroment.rbに書いとくとこうできる ## config.gemsに定義されてるものの状態みれる $ rake gems ## インストールできる $ rake gems:install
READMEにはその時点だからだと思うけど--source http://gemcutter.org指定しろってある
今gemcutter.orgはrubygems.orgに転送されてるし、標準のリポジトリでそもそもインストールできるので指定はしてない
設定するファイル
rspecであれば下記のファイルに書いておけばspec内で使える
- spec/factories.rb
- spec/factories/*.rb
使い方
spec/factories.rbとかに適当に定義する
Factory.define :user, :class => User do |u u.name "homuhomu" u.email "homu@example.com" end
spec/**/*.rbとかの中で呼び出せる
require File.dirname(__FILE__) + '/../spec_helper' describe User do before do @user = Factory.build(:user) end end
Factory.buildだとセーブしないでFactory.createだとセーブして的なまあ一緒ですね。
factories.rbはRubyのファイルなので普通にかけるのも便利そう。
READMEにexampleが充実してるので困ったらREADME見ればよさそうなのもよいすな