Ruby on rails 在测试期间修改Rails i18n配置?
我正在测试一个Rails插件,以确保在启用或不启用Ruby on rails 在测试期间修改Rails i18n配置?,ruby-on-rails,minitest,ruby-on-rails-plugins,Ruby On Rails,Minitest,Ruby On Rails Plugins,我正在测试一个Rails插件,以确保在启用或不启用回退的情况下执行正确的操作。在虚拟应用程序的配置中,我有: module Dummy class Application < Rails::Application config.i18n.fallbacks = true end end 都没有用 这是一个有趣的问题,实际上,一旦应用程序在一开始初始化,您就无法更改i18n配置,因为它已经被以下内容记住: 和I18n。使用此设置了回退 将回调指定为true时,I18n.fa
回退
的情况下执行正确的操作。在虚拟应用程序的配置中,我有:
module Dummy
class Application < Rails::Application
config.i18n.fallbacks = true
end
end
都没有用 这是一个有趣的问题,实际上,一旦应用程序在一开始初始化,您就无法更改i18n配置,因为它已经被以下内容记住: 和
I18n。使用此设置了回退
将回调
指定为true时,I18n.fallbacks
的值为
[1] pry(main)> I18n.fallbacks
=> {}
[2] pry(main)> I18n.fallbacks.class
=> I18n::Locale::Fallbacks
和I18n。在以下情况中使用了回退方法
:
只要I18n.response\u to?:回退
,应用程序将始终启用回退功能
该方法在I18n中定义:
要关闭回退功能,唯一的方法是使I18n.response\u To?:回退
returnfalse
给你:
class << I18n
remove_method :fallbacks
end
class@karlingen这是在rspec中测试类似情况的好方法,但我不知道如何在这里应用它?拉里,谢谢你的帮助。看起来这不是唯一一个使用回退的地方。我现在可能不得不把这个测试略去。我想我是在测试底层代码,这太傻了。
I18n.fallbacks = I18n::Locale::Fallbacks.new(*args)
[1] pry(main)> I18n.fallbacks
=> {}
[2] pry(main)> I18n.fallbacks.class
=> I18n::Locale::Fallbacks
locales.concat(I18n.fallbacks[I18n.locale]) if I18n.respond_to? :fallbacks
def fallbacks
@@fallbacks ||= I18n::Locale::Fallbacks.new
end
class << I18n
remove_method :fallbacks
end