Ответ 1
Вы должны запустить rspec с параметром -b
, чтобы увидеть полные обратные трассы
Прямо сейчас, если я запускаю свой тестовый пакет с помощью 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
не помогает.
Вы должны запустить rspec с параметром -b
, чтобы увидеть полные обратные трассы
Другой (более простой) вариант - отредактировать файл .rspec
и добавить параметр backtrace
.
Он должен выглядеть примерно так:
--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
Еще один вариант, когда все остальное не удается, - это просто добавить блок спасения и распечатать стек, попробуйте или добавьте там ссылку привязки, и используйте 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
Вернитесь к хвосту журнала, и вы увидите ошибку, надеюсь, без лишних других вещей, связанных с ней (потому что вы сами пропустили провал).