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

Dav*_*ulc 5 rspec ruby-on-rails rspec2 rspec-rails ruby-on-rails-3

我是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
Run Code Online (Sandbox Code Playgroud)

所以基本上,"en.example.com"和"example.com"将具有"en"语言环境,而"fr.example.com"将语言环境设置为"fr".

我该怎么测试呢?

Jar*_*red 4

我会做这样的事情:

I18n.available_locales.each do |locale|
  request.host = "#{locale}.example.com"
  get :index
  I18n.locale.should == locale
end
Run Code Online (Sandbox Code Playgroud)

使用此处描述的匿名控制器:

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

另请参阅这个问题:

Rails rspec 设置子域