ruby-on-rails - 为什么在测试 Rails 3 时不能更改当前语言环境?

标签 ruby-on-rails testing locale

我有一个多语言应用程序,我正在尝试为我的一个 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/

相关文章:

ruby-on-rails-3 - rails 3 测试错误:Mysql2::错误:未知列

maven - 为什么 maven-surefire-plugin 会在我的集成测试中运行

testing - 应用程序测试中的 MalformedURLException

c - locale 对 strtol 有什么影响?

ruby-on-rails - Hstore 和 Multi-Tenancy

ruby-on-rails - 错误 310。使用 nginx + rails 3 的重定向过多

ruby-on-rails - 如何在 rails 3 Controller 生成器中使用 `--helper` 标志?

ruby-on-rails - 我在哪里可以找到有关 rails 中使用的 'save' 方法的详细信息?

c - newlocale(3) 的掩码位具体是什么意思?

java - 无法在服务中接收用户区域设置