Rspec和FactoryGirl:SystemStackError:堆栈级别太深

时间:2012-12-12 14:18:06

标签: ruby-on-rails rspec factory-bot

我对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:堆栈级别太深”。

如何在不破坏关联的情况下解决此问题?

1 个答案:

答案 0 :(得分:6)

您的“堆栈级别太深”错误,因为您要根据彼此定义两个工厂。您不需要association :task, factory: task工厂中的question行 - 创建任务时将设置关联。

试试task工厂:

FactoryGirl.define do
  factory :task do
    ...
    questions { [ FactoryGirl.create(:question) ] }
  end
end