initialize_with
Rubyの任意のクラスでFactoryBotを作成したいときはinitialize_with
を使う。
# user_info.rb
class UserInfo
attr_accessor :hoge
def initialize(hoge)
@hoge = hoge
end
end
# factories.rb
factory :user_info do
hoge { Fuga.new }
initialize_with { new(hoge) }
end
build(:user_info).hoge #Fugaクラスのインスタンスが返る
注意
create(:user_info)すると下記のエラーが出る。
NoMethodError:
undefined method save!