[英]Stack level too Deep - Rspec
我已经看到了很多这些问题,但他们的解决方案都没有对我有用。 我有一个这样的测试:
describe RolesController do
describe "#delet" do
context "When the user is logged in" do
let(:user) {FactoryGirl.create(:user)}
let(:admin) {FactoryGirl.create(:admin)}
let(:adminRole) {FactoryGirl.create(:adminRole)}
it "Should allow admins to delete roles" do
sign_in admin
put :destroy, :id => adminRole.id
end
end
end
end
简单,简单,简单。 但我得到了典型的错误:
1) RolesController#delet When the user is logged in Should allow admins to delete roles
Failure/Error: Unable to find matching line from backtrace
SystemStackError:
stack level too deep
# /home/adam/.rvm/gems/ruby-2.0.0-p247/gems/activesupport-4.0.0/lib/active_support/notifications/instrumenter.rb:23
而且我都喜欢......什么? 我再次阅读了几十个关于此问题的问题,这似乎与工厂女孩有关,但我看不出这里的问题是什么。 我有很多其他测试实例化像这样的工厂女孩对象没有问题。
根本就没有用,你用定义变量let
,因为它触发无限递归下面的代码块中。
我认为一些命名冲突导致这个堆栈级别太深的错误。
let(:adminRole) { FactoryGirl.create(:adminRole) }
如何将adminRole
工厂重命名为:admin_role
:
factory :admin_role do
...
end
并改变let
遵循变量约定 :
let(:admin_role) { FactoryGirl.create(:admin_role) }
希望这可以帮到你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.