使用RSpec进行测试:根据第一个子域设置区域设置

时间:2011-04-19 02:20:27

标签: ruby-on-rails ruby-on-rails-3 rspec rspec2 rspec-rails

我是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”。

我该如何测试?

1 个答案:

答案 0 :(得分:4)

我会做这样的事情:

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

另见这个问题:

Rails rspec set subdomain