Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在测试期间修改Rails i18n配置?_Ruby On Rails_Minitest_Ruby On Rails Plugins - Fatal编程技术网

Ruby on rails 在测试期间修改Rails i18n配置?

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

我正在测试一个Rails插件,以确保在启用或不启用
回退
的情况下执行正确的操作。在虚拟应用程序的配置中,我有:

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?:回退
return
false

给你:

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