3 votes

Rspec et FactoryGirl : SystemStackError : niveau de pile trop profond

J'ai un problème avec FactoryGirl :

Voici mes deux usines :

FactoryGirl.define do
  factory :task do
    ...
    after(:build) do |task|
      question = FactoryGirl.create(:question)
      task.questions = [question]
    end
  end
end

et

FactoryGirl.define do
  factory :question do
    association :task, factory: :task
    ...
  end
end

La fabrique de questions crée des tâches, la fabrique de tâches crée des questions, etc. Donc, j'ai un message : "SystemStackError : stack level too deep".

Comment puis-je résoudre ce problème sans briser les associations ?

7voto

shioyama Points 15314

Vous obtenez une erreur "stack level too deep" parce que vous définissez les deux usines l'une par rapport à l'autre. Vous n'avez pas besoin du association :task, factory: task dans le question usine -- l'association sera définie lorsque vous créerez une tâche.

Essayez ceci pour votre task usine :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X