gpt4 book ai didi

ruby-on-rails - 将默认参数设置为一些 rspec 请求

转载 作者:行者123 更新时间:2023-12-04 17:16:11 26 4
gpt4 key购买 nike

语境:
我们的一些 rails 路由需要语言环境来生成 url(例如 domain.com/en/courses ),而基本 Controller (对于 domain.com )不使用语言环境。
我们通过在 default_url_options 中添加语言环境来设置它正确的 Controller 。
问题:
但是在 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
但它为整个应用程序设置了语言环境,而不仅仅是一些特定的路线......
问题:
有没有办法为 设置默认参数?一些 rspec 支持中的路由?

最佳答案

第一个解决方案
在应用程序 Controller 上

if Rails.env.test?
before_action :set_default_locale

private
def set_default_locale
I18n.locale = params.fetch(:locale, :en)
end
end
我知道这不是正确的方法
它不会在 rspec 级别更新您的应用程序,但到目前为止,这是我能想到的

第二种替代解决方案
路线级别的更新
if Rails.env.test?
defaults = { locale: :en }
else
defaults = {}
end
scope "(:locale)", :locale => /en|id/, :defaults => defaults do

关于ruby-on-rails - 将默认参数设置为一些 rspec 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68666203/

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