#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 значительно упрощает поиск ошибки в вашем коде, поскольку она будет находиться в верхней части трассировки стека.