如何获得rspec-2给出与testing失败关联的完整跟踪?

现在,如果我使用rake spec来运行我的testing套件,我会得到一个错误:

 1)SegmentsController GET'索引'应该工作
   失败/错误:get'index'
   未定义的方法`语言环境'为#
    #./spec/controllers/segments_controller_spec.rb:14:
      在'块(3级)'

这是正常的,因为我有一个错误:)

问题是跟踪不是很有帮助。 我知道它打破了segments_controller_spec.rb ,第14行,但这只是我称之为testing的地方:

 ### segments_controller_spec.rb:14 get 'index' 

我宁愿有实际的行中断和完整的跟踪,而不是spec文件夹中的部分。

--trace运行没有帮助。

您必须使用-b选项运行rspec才能查看完整的回溯

另一种(更简单的)替代方法是编辑.rspec文件,并添加backtrace选项。 它应该看起来像这样:

 --colour --backtrace 

这会给你完整的回溯。 希望这可以帮助。

这也将工作:

 # rails_helper.rb RSpec.configure do |config| config.full_backtrace = true end 

另一种方法是清除spec_helper.rb所有回溯排除模式。 我最喜欢这个解决scheme,因为我能够将所有RSpec设置保留在一个地方,摆脱.rspec file或显式--backtrace中的.travis.yml

 # spec_helper.rb RSpec.configure do |config| config.backtrace_exclusion_patterns = [] end 

当所有其他的失败时,还有一个select就是添加一个救援块并打印出堆栈,然后在那里添加一个绑定的pry语句并使用show-stack

 rescue Exception => e puts "" puts e.backtrace puts "" 

我不知道如何让控制器错误显示在rspec中。 有时会出现,但我不知道是什么情况导致它出现。 这是一种很快看到错误的方法:

打开另一个terminal会话并运行:

 tail -f log/test.log 

然后回到terminal会话,只运行有错误的规格:

 bin/rspec -b spec/requests/posts/index_spec.rb 

回到日志的尾部,你应该看到错误,希望没有太多的其他东西(因为你自己运行失败的testing)。