我正在尝试使用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
和所有?
答案 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
现在我可以看到完整的痕迹!