开发者

Why can't I change the current locale when testing Rails 3?

I have a multilingual application and I am trying to write some tests for one of my controllers. However, it seems that I cannot change the current locale in testing. It works ok in development. Assume that my test is as follows:

test "do something has to be done correctly" do
  I18n.locale = :cn # set current locale to chinese
  assert_eq开发者_Go百科ual :cn, I18n.locale
end

This test fails with error:

<:cn> expected but was
<:en>.

:en is the default locale in my configuration.

Has anybody encountered this problem in Rails 3 before? Any solution found?


Your code, inserted precisely as you have it in a functional test case, works perfectly in a new Rails 3.0.9 application.

That having been said, setting the locale in I18n.locale within a functional test before calling get or something to test a controller is not going to set the locale in your application's context (only the locale in your test's context).

Usually you need to merge something like { :locale => :cn } into your parameters, to set the locale for your request. This won't affect the actual test you're showing, but maybe you're not showing precisely what is failing.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜