Как получить 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'


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



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

546   6  

6 ответов:

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

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

--colour
--backtrace

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

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

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

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

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

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

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

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

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

tail -f log/test.log

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

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

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

Comments

    Ничего не найдено.