Pour un test de contrôleur, en haut de la spécification que je suis la définition des modèles:Rspec obtenir « niveau de la pile trop profond » des associations
let(:user) { Factory(:user, :company => company) }
let(:facility) { Factory(:facility, :company => company) }
let(:company) { Factory(:company, :facilities => [facility]) }
Et faire la spécification de l'indice de base:
context "responding to GET index" do
it "should expose all facilities as @facilities" do
user.company.should_receive(:facilities).and_return([facility])
get :index
assigns[:facilities].should == [facility]
end
end
Mais j'obtiens cette erreur:
should expose all facilities as @facilities
stack level too deep
/Users/dmix/.rvm/gems/ruby-1.9.3-p0/gems/rspec-core-2.6.4/lib/rspec/core/let.rb:90
88 module InstanceMethods
89 def __memoized # :nodoc:
90 @__memoized ||= {}
91 end
92 end
le problème semble référencer les 3 usines en même temps.
Si je supprime les installations: de la définition de l'usine de l'entreprise, l'erreur de la pile va bien:
let(:company) { Factory(:company) }
Comment puis-je usine trois modèles que toute référence sans se faire un stackoverflow?
qui corrige en effet la pile d'erreurs trop profond, mais il casse les tests tels que: user.company.should_receive (: installations) .and_return ([établissement]) – dMix
Dans le test après la création de l'usine, pouvez-vous simplement attribuer l'installation à l'entreprise? – jaydel