Тестирование с помощью RSpec: настройка локали на основе первого субдомена

Я новичок в RSpec и не могу понять, как проверить следующее:

В моем контроллере приложения (в приложении Rails 3) я устанавливаю локаль в фильтре перед, например

def set_locale
  I18n.locale = ["en", Setting.locale, get_locale_from_subdomain].compact.last
end

def get_locale_from_subdomain
  locale = request.subdomain.split('.').first
  return nil unless LOCALES.include? locale
  locale
end

Таким образом, в основном, «en.example.com» и «example.com» будут иметь локаль «en», тогда как «fr.example.com» установит локаль «fr».

Как я могу проверить это?


person David Sulc    schedule 19.04.2011    source источник


Ответы (1)


Я бы сделал что-то вроде этого:

I18n.available_locales.each do |locale|
  request.host = "#{locale}.example.com"
  get :index
  I18n.locale.should == locale
end

С анонимным контроллером, как описано здесь:

https://www.relishapp.com/rspec/rspec-rails/v/2-4/docs/controller-specs/anonymous-controller

Также см. этот вопрос:

Поддомен установки rspec Rails

person Jared    schedule 15.09.2011