У меня есть спецификация запроса в 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 или в инициализации фиктивного приложения, которое я могу сделать, чтобы убедиться, что используются правильные модули?