Как получить rspec-2, чтобы дать полный след, связанный с отказом теста?

Прямо сейчас, если я запускаю свой тестовый пакет с помощью 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'

Я бы предпочел иметь фактическое нарушение строки и полную трассировку, а не часть в папке spec.

Работа с --trace не помогает.

Ответ 1

Вы должны запустить rspec с параметром -b, чтобы увидеть полные обратные трассы

Ответ 2

Другой (более простой) вариант - отредактировать файл .rspec и добавить параметр backtrace. Он должен выглядеть примерно так:

--colour
--backtrace

Это даст вам полную отдачу. Надеюсь, это поможет.

Ответ 3

Это также будет работать:

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

Ответ 4

Другой подход - очистить все шаблоны исключения backtrace в spec_helper.rb. Мне больше нравится это решение, так как я могу сохранить все настройки RSpec в одном месте и избавиться от .rspec file или явного --backtrace в .travis.yml.

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

Ответ 5

Еще один вариант, когда все остальное не удается, - это просто добавить блок спасения и распечатать стек, попробуйте или добавьте там ссылку привязки, и используйте show-stack.

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

Ответ 6

Я не знаю, как получить ошибку контроллера в rspec. Иногда это проявляется, но я не знаю, какие условия заставляют его проявляться. Вот способ увидеть ошибку довольно быстро, хотя:

Откройте еще один сеанс терминала и запустите:

tail -f log/test.log

Затем вернитесь к сеансу терминала и запустите только спецификацию с ошибкой:

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

Вернитесь к хвосту журнала, и вы увидите ошибку, надеюсь, без лишних других вещей, связанных с ней (потому что вы сами пропустили провал).