У меня есть спецификация запроса в Rails-движке. Представленное представление вызывает маршрут и переходит в хеш, т.е. projects_path(:scope => "user")
. Такой маршрут в конечном итоге вызовет url_for
, но url_for
определяется во многих местах. При запуске приложения или выполнении спецификации запроса в главном приложении (корневой уровень) цепочка вызовов заканчивается на ActionView::RoutingUrlFor#url_for
; однако при запуске спецификации в движке цепочка вызовов заканчивается на ActionView::Helpers::UrlHelper#url_for
.
В Rails 4 метод url_for
, определенный в UrlHelper
, больше не принимает хэш-аргументы, поэтому я остался с этой ошибкой
Failure/Error: visit projects_opportunity_intakes_path
ActionView::Template::Error:
arguments passed to url_for can't be handled. Please require routes or provide your own implementation
То, что я пытаюсь понять, - это то, почему он возвращается на ActionView::Helpers::UrlHelper
, когда я запускаю спецификацию в своем движке, но не в любом другом случае. Это довольно сложно. Одна вещь, которая выделяется для меня: когда я помещаю точку останова в свою точку зрения и оцениваю self.class
, я обычно получаю что-то, что наследуется от ActionView::Base
, но когда я запускаю spec из моего движка, класс не наследует от что-нибудь. Я не знаю, связано ли это, но кажется подозрительным.
Кто-нибудь испытывает это? Знать дорогу вокруг него? Могут ли мои модули быть включены в неправильный порядок? Есть ли что-то в spec_helper
или в инициализации фиктивного приложения, которое я могу сделать, чтобы убедиться, что используются правильные модули?