gpt4 book ai didi

ruby-on-rails - 将 url_helpers 用于 Rails 引擎和 Rspec 中的基本应用程序

转载 作者:行者123 更新时间:2023-12-04 07:35:58 24 4
gpt4 key购买 nike

我有一个 Rails 3.2.15 应用程序,在 routes.rb 顶部安装了一个引擎,如下所示:

mount Service::Engine => '/'

在测试我的应用程序时,我想为我的引擎使用路由 url_helpers,如果该路由不存在,请回退到主应用程序。

例如,我在主应用程序( rake routes 输出)中有这个路由,它在引擎中不存在:
manager_account  GET  /manager/accounts/:id(.:format)     manager_accounts#show

我在 spec_helper.rb 中包含了应用程序和引擎的 url_helpers :
RSpec.configure do |config|
config.include Service::Engine.routes.url_helpers, type: :feature
config.include Rails.application.routes.url_helpers, type: :feature
end

我的问题是,当我尝试在规范中调用 manager_account_path(account) 时,出现以下错误:
ActionController::RoutingError:
No route matches {:action=>"show", :controller=>"manager_accounts", :id=>...

如果我称它为 main_app.manager_account_path(account) 那么它就会成功,但我真的很想避免每次都指定它。有什么方法可以设置它,我可以使用我的 url_helpers 以便如果引擎中不存在路由,它会回退到基本应用程序?

最佳答案

看起来您正在尝试在主应用程序中测试您的引擎代码。我建议使用引擎提供的虚拟应用程序来测试您的引擎代码。
根据 Rails guide :

When an engine is generated, there is a smaller dummy application created inside it at test/dummy. This application is used as a mounting point for the engine, to make testing the engine extremely simple. You may extend this application by generating controllers, models or views from within the directory, and then use those to test your engine.

The test directory should be treated like a typical Rails testing environment, allowing for unit, functional and integration tests.

关于ruby-on-rails - 将 url_helpers 用于 Rails 引擎和 Rspec 中的基本应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19867202/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com