我有一个多语言应用程序,我正在尝试为我的一个 Controller 编写一些测试。但是,我似乎无法在测试中更改当前语言环境。它在开发中工作正常。假设我的测试如下:
test "do something has to be done correctly" do
I18n.locale = :cn # set current locale to chinese
assert_equal :cn, I18n.locale
end
此测试因错误而失败:
<:cn> expected but was
<:en>.
:en
是我配置中的默认语言环境。
以前有人在 Rails 3 中遇到过这个问题吗?找到解决方案了吗?
最佳答案
您的代码完全按照您在功能测试用例中的方式插入,可以在新的 Rails 3.0.9 应用程序中完美运行。
话虽如此,在调用 get
或其他测试 Controller 的功能测试之前,在 I18n.locale
中设置语言环境不是 将在您的应用程序上下文中设置语言环境(仅在您的测试上下文中设置语言环境)。
通常您需要将诸如 { :locale => :cn }
之类的内容合并到您的参数中,以便为您的请求设置语言环境。这不会影响您正在展示的实际测试,但您可能没有准确展示失败的原因。
关于ruby-on-rails - 为什么在测试 Rails 3 时不能更改当前语言环境?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6655483/