如何获得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)。