现在,如果我使用 rake spec
运行我的测试套件,我会收到一个错误:
1) SegmentsController GET 'index' should work Failure/Error: get 'index' undefined method `locale' for # # ./spec/controllers/segments_controller_spec.rb:14: in `block (3 levels) in '
这是正常的,因为我确实有错误:)
问题是跟踪不是很有帮助。我知道它在 segments_controller_spec.rb
的第 14 行中断了,但这正是我称之为测试的地方:
### segments_controller_spec.rb:14
get 'index'
我希望有实际的换行和完整的跟踪,而不是规范文件夹中的部分。
与 --trace
一起运行没有帮助。
您必须使用 -b
选项运行 rspec 才能查看完整的回溯
另一种(更简单的)替代方法是编辑 .rspec
文件,并添加 backtrace
选项。它应该看起来像这样:
--colour
--backtrace
这将为您提供完整的回溯。希望这可以帮助。
color
。我想如果你拼写它 colour
可能会出现一个 Monty Python 笑话
这也将起作用:
# rails_helper.rb
RSpec.configure do |config|
config.full_backtrace = true
end
另一种方法是清除 spec_helper.rb
中的所有回溯排除模式。我最喜欢这个解决方案,因为我能够将所有 RSpec 设置保存在一个地方,并在 .travis.yml
中去掉 .rspec file
或显式 --backtrace
。
# spec_helper.rb
RSpec.configure do |config|
config.backtrace_exclusion_patterns = []
end
我不知道如何让控制器错误显示在 rspec 中。有时它会出现,但我不知道是什么条件导致它出现。不过,这是一种相当快速地查看错误的方法:
打开另一个终端会话并运行:
tail -f log/test.log
然后返回终端会话并仅运行出现错误的规范:
bin/rspec -b spec/requests/posts/index_spec.rb
回到日志的尾部,您应该会看到错误,希望它周围没有太多其他内容(因为您自己运行了失败的测试)。
当所有其他方法都失败时,另一种选择是添加一个救援块并打印出堆栈尝试或在那里添加一个绑定 pry 语句并使用 show-stack
。
rescue Exception => e
puts ""
puts e.backtrace
puts ""
begin
和 rescue
块作为控制器操作方法的外部语句。或使用 rescue_from
。
git diff
,这会节省你的培根。
不定期副业成功案例分享