Почему я не могу изменить текущую локаль при тестировании Rails 3? - PullRequest
2 голосов
/ 11 июля 2011

У меня многоязычное приложение, и я пытаюсь написать несколько тестов для одного из моих контроллеров. Тем не менее, похоже, что я не могу изменить текущую локаль в тестировании. Работает нормально в разработке. Предположим, что мой тест выглядит следующим образом:

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 раньше? Любое решение найдено?

1 Ответ

2 голосов
/ 12 июля 2011

Ваш код, вставленный точно так же, как он есть в функциональном тестовом примере, прекрасно работает в новом приложении Rails 3.0.9.

Как уже говорилось, установка языкового стандарта в I18n.locale внутри функционалаtest перед вызовом get или что-то для проверки контроллера: not собирается установить языковой стандарт в контексте вашего приложения (только языковой стандарт в контексте вашего теста).

Обычно вам нужно объединитьчто-то вроде { :locale => :cn } в ваши параметры, чтобы установить язык для вашего запроса.Это не повлияет на фактический тест, который вы показываете, но, возможно, вы не показываете точно, что дает сбой.

...