Ruby on rails 添加额外示例后,rspec中出现堆栈级别太深的错误

Ruby on rails 添加额外示例后,rspec中出现堆栈级别太深的错误,ruby-on-rails,ruby,ruby-on-rails-3,rspec,Ruby On Rails,Ruby,Ruby On Rails 3,Rspec,我使用的是ruby-1.9.3-p0。我的包裹包括 Using rails (3.1.3) Using rspec-core (2.7.1) Using rspec-expectations (2.7.0) Using rspec-mocks (2.7.0) Using rspec (2.7.0) Using rspec-rails (2.7.0) 我的规范中出现了一个非常奇怪的问题。我有大约5个示例,如下所示: describe "Example" do context "when

我使用的是ruby-1.9.3-p0。我的包裹包括

Using rails (3.1.3)
Using rspec-core (2.7.1) 
Using rspec-expectations (2.7.0) 
Using rspec-mocks (2.7.0) 
Using rspec (2.7.0)
Using rspec-rails (2.7.0)
我的规范中出现了一个非常奇怪的问题。我有大约5个示例,如下所示:

describe "Example" do
  context "when adding stuff" do
    it "should do stuff" do
      # ...
    end

    it "..." do
      # ...
    end
  end

  context "when doing other stuff" do
    it "..." do
      # ...
    end

    it "..." do
      # ...
    end

    it "..." do
      # ...
    end
  end
end
但是,如果我在执行其他任务块时在上下文中添加一个额外的示例,则会出现此错误

  1) Example when adding stuff should do stuff
     Failure/Error: Unable to find matching line from backtrace
     stack level too deep
     # /../../activesupport-3.1.3/lib/active_support/duration.rb:55


  2) Example when adding stuff should do stuff
     Failure/Error: Unable to find matching line from backtrace
     stack level too deep
     # /../../activesupport-3.1.3/lib/active_support/core_ext/time/calculations.rb:266
奇怪的是,如果我像这样注释掉块中的所有内容

it "should do stuff" do
  # everything commented out
end
这种情况仍然存在。即使我将我添加的新示例注释掉

it "new example within when doing stuff context" do
  # everything commented out
end
它仍然会抛出错误。然后,如果我注释掉每个示例中的所有代码,它仍然会发生!只有当我完全删除第一个it应该做的事情示例时,它才会消失。有人经历过吗?谢谢

编辑:我想补充一点。当运行所有规格时,如下所示:

rspec
我所有的例子都在没有堆栈溢出的情况下通过并运行。但是,只有在我单独运行规范时才会发生这种情况:

rspec spec/models/example_spec.rb

还要确保检查您的模型是否有最近的更改,如

after_save :do_something

def do_something
 self.update_attribute(:att,val)
end

又名无止境循环

听起来像是有一个方法在某处调用自己,它调用自己,它调用自己…,或者是一个递归方法没有很快达到退出条件,导致堆栈溢出。查看您最近添加的其他代码,或者代码调用的代码,您可能会找到问题的根源。但是,为什么仅仅添加一个额外的示例(甚至为空)就会导致堆栈溢出呢。为什么不在之前?我不知道。您可以发布实际代码而不是伪代码吗?我不想成为一个混蛋,但如果你给我们理论上的代码,我们只能给你理论上的答案,你知道吗?是的,我理解,对不起,我很快会尝试添加更多的上下文。然而,我刚刚发现通过rspec运行我的所有规范不会导致堆栈溢出,但是单独运行规范会导致堆栈溢出?如果您运行的是rspecv2,我将始终通过rspec而不是spec运行它们。