gfd*_*gfd 5 ruby rspec ruby-on-rails rspec-rails
我们的一些 Rails 路由需要区域设置来生成 url(例如domain.com/en/courses),而基本控制器(例如domain.com)不使用区域设置。default_url_options我们通过在右侧控制器中添加区域设置来设置它。
但是在 Rspec 中测试它时,我收到一个missing required keys错误,询问区域设置。当我在规范中添加区域设置参数时,visit course_path(@course, locale: :en)一切都恢复正常......但我们有很多规范!
我尝试使用default_url_option中的方法ActionView::TestCase::TestController,就像ActionDispatch::Routing::RouteSet这样
class ActionView::TestCase::TestController
def default_url_options(options = {})
{ locale: I18n.default_locale }
end
end
class ActionDispatch::Routing::RouteSet
def default_url_options(options = {})
{ locale: I18n.default_locale }
end
end
Run Code Online (Sandbox Code Playgroud)
但它设置了整个应用程序的区域设置,而不仅仅是一些特定的路线......
有没有办法在 rspec 支持中为某些路由设置默认参数?
在应用程序控制器上
if Rails.env.test?
before_action :set_default_locale
private
def set_default_locale
I18n.locale = params.fetch(:locale, :en)
end
end
Run Code Online (Sandbox Code Playgroud)
我知道这不是正确的方法
它不会在 rspec 级别上更新您的应用程序,但到目前为止,这是我的想法
路线级别更新
if Rails.env.test?
defaults = { locale: :en }
else
defaults = {}
end
scope "(:locale)", :locale => /en|id/, :defaults => defaults do
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
411 次 |
| 最近记录: |