How to get rspec-2 to give the full trace associated with a test failure?

筅森魡賤 提交于 2019-11-27 10:24:16

问题


Right now if I run my test suite using rake spec I get an error:

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 '

This is normal as I do have an error :)

The problem is that the trace isn't very helpful. I know it broke in segments_controller_spec.rb, line 14, but this is just where I call the test:

### segments_controller_spec.rb:14
get 'index'

I would prefer to have the actual line breaking and the complete trace, not the part in the spec folder.

Running with --trace doesn't help.


回答1:


You must run rspec with -b option to see full backtraces




回答2:


Another (easier) alternative is to edit the .rspec file, and add the backtrace option. It should look somewhat like this:

--colour
--backtrace

That will give you the full backtrace. Hope this helps.




回答3:


This will also work:

# rails_helper.rb
RSpec.configure do |config|
  config.full_backtrace = true
end



回答4:


Another approach is to clear all backtrace exclusion patterns in spec_helper.rb. I like this solution most as I'm able to keep all RSpec settings in one place and get rid of .rspec file or explicit --backtrace in .travis.yml.

# spec_helper.rb
RSpec.configure do |config|
  config.backtrace_exclusion_patterns = []
end



回答5:


One more option when all else fails is to just add a rescue block and print out the stack try or add a binding pry statement there and use show-stack.

rescue Exception => e
  puts ""
  puts e.backtrace
  puts ""



回答6:


I don't know how to get the controller error to show up in rspec. Sometimes it shows up but I don't know what conditions cause it to show up. Here is a way to see the error fairly quickly though:

Open another terminal session and run:

tail -f log/test.log

Then go back to the terminal session and run just the spec that had the error:

bin/rspec -b spec/requests/posts/index_spec.rb

Go back to the tail of the log and you should see the error, hopefully without too much other stuff surrounding it (because you ran the failing test by itself).



来源:https://stackoverflow.com/questions/7649037/how-to-get-rspec-2-to-give-the-full-trace-associated-with-a-test-failure

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!