我对FactoryGirl有一个问题:
这是我的两家工厂:
FactoryGirl.define do
factory :task do
...
after(:build) do |task|
question = FactoryGirl.create(:question)
task.questions = [question]
end
end
end
和
FactoryGirl.define do
factory :question do
association :task, factory: :task
...
end
end
问题工厂创建任务,任务工厂创建问题等等。所以,我有一条消息:“SystemStackError:堆栈级别太深”。
如何在不破坏关联的情况下解决此问题?
答案 0 :(得分:6)
您的“堆栈级别太深”错误,因为您要根据彼此定义两个工厂。您不需要association :task, factory: task
工厂中的question
行 - 创建任务时将设置关联。
试试task
工厂:
FactoryGirl.define do
factory :task do
...
questions { [ FactoryGirl.create(:question) ] }
end
end