Как получить 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 не помогает.
6 ответов:
другой (более простой) альтернативой является редактирование
.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