Ruby on rails пропускает остаток блока при сбое assert_select - PullRequest
1 голос
/ 07 декабря 2011

Я реализовал поддержку интернационализации для приложения Rails с помощью модуля I18n, и сейчас я тестирую эту реализацию.

Я использую функциональные тесты с assert_select, чтобы утверждать, что нет никаких элементов HTML span симя класса "translation_missing", которое отлично работает.

Я также написал вспомогательный метод для получения всех файлов локали из каталога config / locales, который также отлично работает.

Моя проблема, когда я пытаюсь перебрать каждую локаль и проверить, что нет пропущенных переводов.Если тест не пройден для одной локали, он выходит из блока, сообщая об ошибке, тогда как я хотел бы, чтобы тест продолжался и выводил несколько сообщений об ошибках, где это применимо.Вот тест:

test "index page no missing translations" do 

  # Login as admin to avoid 302 errors
  login_as(@user)

  # Get a list of the locales
  locales = get_locales()

  # Check each locale for missing translations
  locales.each do |locale|
  get :index, :locale => locale
  assert_select "span.translation_missing", false, "Broadcasts index page: Translations missing from #{locale}.yml"

  end
end

Есть ли способ остановить выход из блока?

Заранее спасибо.

1 Ответ

4 голосов
/ 07 декабря 2011

Вы, вероятно, должны метапрограммировать его, например, что-то вроде (не проверено)

get_locales.each do |locale|
  test "index page translations #{locale}" do 
   # Login as admin to avoid 302 errors
   login_as(@user)
   get :index, :locale => locale
   assert_select "span.translation_missing", false, "Broadcasts index page: Translations missing from #{locale}.yml"
  end
end

Это приведет к созданию нескольких тестов, каждый из которых тестирует только один языковой стандарт, и ни один из них не испортит результатыостальные.

...