FactoryGirlでActiveRecord以外のデータをつくる
例えばHashie::Mashを返したい場合はこんな感じ。
FactoryGirl.define do factory :post, class: Hashie::Mash do title "foo" body "bar" end end FactoryGirl.build(:post).class #=> Hashie::Mash FactoryGirl.build(:post) #=> {"title"=>"foo", "body"=>"bar"} FactoryGirl.build(:post, title: "baz").title #=> "baz"
ちなみにbuild
じゃなくてcreate
するとsave!
が呼ばれるんだけどHashie::Mash#xxx!
はxxx
フィールドが作られるという挙動なのでcreate
でも動くけど無駄にsave
フィールドが作られる。
FactoryGirl.create(:post) #=> {"title"=>"foo", "body"=>"bar", "save" => {}}