Как отладить определенные ошибки в Rspec

#ruby-on-rails #rspec #rspec-rails

#ruby-on-rails #rspec #rspec-rails

Вопрос:

Давно хотел попросить об этом … так часто, когда я запускаю тест, я получаю такую ошибку:

 bundle exec rspec spec/features/admin/2_email_maintenances_spec.rb:32 -b
Run options: include {:locations=>{"./spec/features/admin/2_email_maintenances_spec.rb"=>[32]}}

An error occurred in an after hook
  ActionView::Template::Error: wrong number of arguments (1 for 0)
  occurred at /Users/jamesdong/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.1/lib/active_record/attribute_methods.rb:45:in `__temp__079636b65707f53747162747'

F

Failures:
  

Каков наилучший способ выяснить, откуда в коде ActionView::Template::Error происходит? Запуск спецификации с полной обратной трассировкой ( -b ) на самом деле не помогает, поскольку это объясняет причину сбоя теста, а не ошибки, которые я получаю в коде. Также переход к файлу, на который ссылается ссылка, не помогает, потому что нравится… Я получаю сообщение об ошибке, я просто хочу знать, где в МОЕМ коде был вызван метод.

Ответ №1:

RSpec-core позволяет отфильтровывать отдельные драгоценные камни:

 # arbitrary gems may also be filtered via:
config.filter_gems_from_backtrace("active_record")
  

RSpec-rails предоставляет дополнительную опцию для фильтрации всех «rails» драгоценных камней (ActiveRecord, ActionPack и т.д.):

 # Filter lines from Rails gems in backtraces.
config.filter_rails_from_backtrace!
  

Комментарии:

1. я не думаю, что хочу их отфильтровывать… я хочу выяснить, что их вызывает?

2. Отфильтровывание жемчужин rails значительно упрощает поиск ошибки в вашем коде, поскольку она будет находиться в верхней части трассировки стека.