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