1
對於控制器測試,在我定義的模型規範的頂部:Rspec的越來越「堆棧層次過深,」從協會
let(:user) { Factory(:user, :company => company) }
let(:facility) { Factory(:facility, :company => company) }
let(:company) { Factory(:company, :facilities => [facility]) }
,並做基本指標規格:
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
但我發現了這個錯誤:
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
這個問題似乎在同一時間被引用的3家工廠。
如果我刪除:從公司工廠定義設施,堆棧錯誤去的方式:
let(:company) { Factory(:company) }
我怎麼廠三個型號,所有沒有得到一個計算器相互引用?
那的確修復了堆太深的錯誤,但它打破了測試,如:user.company.should_receive(:設施).and_return([工具]) – dMix
在工廠創建測試後,你能簡單地將設施分配給公司嗎? – jaydel