首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rspec堆栈级别太深

rspec堆栈级别太深
EN

Stack Overflow用户
提问于 2012-02-12 15:01:30
回答 4查看 8.4K关注 0票数 2

当我分别运行我的模型规格和控制器规格时,这是很好的。当我一起运行它们时,我得到一个堆栈溢出,字面意思是:)

代码语言:javascript
复制
$ bundle exec rspec --fail-fast spec/models
........

Finished in 0.44274 seconds
8 examples, 0 failures

$ bundle exec rspec --fail-fast spec/controllers
..

Finished in 0.99339 seconds
2 examples, 0 failures

$ bundle exec rspec --fail-fast spec
F

Failures:

  1) HerpController derp derp example
     Failure/Error: Unable to find matching line from backtrace
     SystemStackError:
       stack level too deep
     # /Users/jared/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.2.1/lib/abstract_controller/layouts.rb:359

Finished in 0.02241 seconds
1 example, 1 failure

我怎么才能开始调试呢?谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-02-13 13:11:44

一次删除一半的规格就出现了这个问题。我想这是二等分调试的一个例子。感谢Frederick Thanks,他的评论建议了这种方法。

对于后代来说,这就是问题所在。

代码语言:javascript
复制
include Rails.application.routes.url_helpers
describe "Attendee#next_page" do
end

显然,包括go inside describe

代码语言:javascript
复制
describe "Attendee#next_page" do 
  include Rails.application.routes.url_helpers
end

关于rspec,我有很多东西要学习。:)

票数 11
EN

Stack Overflow用户

发布于 2012-02-12 15:40:18

您可以在代码中放置一条debugger语句并以这种方式进行调试,或者在您知道正在运行的代码所在的位置开始使用puts "got here"。我建议使用一些有意义的东西,而不是"got here“:-)

票数 1
EN

Stack Overflow用户

发布于 2012-02-12 18:30:36

我会从代码中关键点的putsraise语句开始,这样您就可以开始缩小导致问题的行的范围。一旦你开始接近,你就可以一次注释掉一行,找出问题在哪一行消失了--一旦你把它压缩到一行,你就可以找出这行做了什么Ruby不喜欢的事情。

一般来说,“堆栈级别太深”通常是一个无限循环或无限递归问题--我可以想象,在某种情况下,模型正在调用调用模型的控制器,反之亦然。除非你开始注释掉几行代码,否则无法确定,但任何你拥有函数调用的地方都将属于你的可疑短名单。祝好运!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9247071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档