rspec没有提供任何回溯

时间:2013-06-12 19:47:48

标签: rspec rspec-rails

我正在尝试使用rspec调试某些内容,但堆栈跟踪只是没有帮助:它们不够深入。

NoMethodError:
   undefined method `after_create=' for #<Spree::Calculator::FlatRate:0x007ffc988d1868>
 # ./spec/models/stripe_event_processor_spec.rb:63:in `block (2 levels) in <top (required)>'
 # ./spec/models/stripe_event_processor_spec.rb:69:in `block (2 levels) in <top (required)>'
 # ./spec/models/stripe_event_processor_spec.rb:81:in `block (2 levels) in <top (required)>'

例如,在这里,我的一个宝石中的FactoryGirl方法存在问题,但是所有rspec给我的都是我自己的测试中触发它的行。没有超级帮助。

我已尝试将--backtrace添加到我的rspec命令中,但它不再进行跟踪!

我怀疑,看着this article,这可能是因为默认的rspec配置在进入gems/文件夹时会过滤堆栈跟踪。

文章建议手动覆盖rspec配置,这有点hacky,但可能是最好的解决方案。如果这是真的:那么说我的计算机上的rspec配置在哪里?它不在我的bundler目录中,包含我所有的其他宝石。

有什么想法吗?我怎样才能让rspec给我一个真正的回溯,gems和所有?

1 个答案:

答案 0 :(得分:2)

原来我需要找出我的计算机上config.backtrace_clean_patterns被定义的位置,因为我可以在spec_helper.rb中覆盖它,如下所示:

RSpec.configure do |config|
  # RSpec automatically cleans stuff out of backtraces;
  # sometimes this is annoying when trying to debug something e.g. a gem
  config.backtrace_clean_patterns = [
    /\/lib\d*\/ruby\//,
    /bin\//,
    /gems/,
    /spec\/spec_helper\.rb/,
    /lib\/rspec\/(core|expectations|matchers|mocks)/
  ]
end

是默认值,可以像下面的spec_helper.rb文件一样被覆盖:

RSpec.configure do |config|
  # RSpec automatically cleans stuff out of backtraces;
  # sometimes this is annoying when trying to debug something e.g. a gem
  config.backtrace_clean_patterns = [
  ]
end

现在我可以看到完整的痕迹!