在Ruby on Rails TestCase中启用完整的回溯

时间:2011-10-03 10:34:06

标签: ruby-on-rails ruby ruby-on-rails-3 testing

我跑步时只显示一行回溯:

rake test

输出:

...

ERROR should get search for keywords (1.93s) 
  NoMethodError: undefined method `features' for #<Transcript:0x00000006243780>
  /usr/lib/ruby/gems/1.9.1/gems/activemodel-3.1.0/lib/active_model/attribute_methods.rb:385:in `method_missing'

...

我需要更多回溯信息。 我试过了

  • rake test --trace

  • config / initializers / backtrace_silencers.rb中的
  • Rails.backtrace_cleaner.remove_silencers!

  • 设置全局$ DEBUG = true

它不起作用。

如何开启?

3 个答案:

答案 0 :(得分:26)

BACKTRACE=blegga rake test

BACKTRACE=blegga rails test # rails 5+

如果您需要与rake相关的日志,请附加--trace

答案 1 :(得分:2)

终于弄明白了。问题在于Rails 3.1中包含'turn'宝石,或者实际上是转向v0.8.2,这是默认Gemfile所要求的:

group :test do
  # Pretty printed test output
  gem 'turn', '0.8.2', require: false
end

转向v0.8.2不包含完整的回溯,因此您必须升级才能获得它。我通过将我的Gemfile中的上述内容更改为:

来实现
group :test do
  # Pretty printed test output
  gem 'turn', require: false
  gem 'minitest'
end

(我不得不添加minitest,否则会抛出一个RuntimeError,说“MiniTest v1.6.0已经过时了。”)

然后我跑了bundle update turn并得到了最新的版本(截至本文撰写时为0.9.2)。这给了完整的回溯。

答案 2 :(得分:1)

现在您可以运行:

rails test --backtrace