2011-02-09 4 views
17

Я начинаю работу с RSpec. У меня есть новое приложение rails 3, которое использует HTTP_ACCEPT_HEADER или двухдонный субдомен запроса для установки языка приложения и перенаправления соответственно. Я успешно тестирую свой код перенаправления с помощью Cucumber.Настройка http заголовков RSpec 2.4/Rails 3

Теперь я хочу написать спецификации своего контроллера, и мне нужно установить субдомен запроса перед моим тестом.

В моих шагов огурца, я могу указать:

header 'HTTP_HOST', 'es.mysite.local' 
visit '/' 

Но когда я пытаюсь сделать это в файле спецификации

header 'HTTP_HOST', 'es.mysite.local' 
get 'index' 

Я получаю эту ошибку:

Failure/Error: header 'HTTP_HOST', "es.mysite.local" 
LoadError: 
    no such file to load -- action_controller/integration 

Вы знаете, как это решить?

ответ

30

Попробуйте это:

request.env['HTTP_HOST'] = 'es.mysite.local' 
get 'index' 
+0

Большое вам спасибо! Я уже пробовал это, но теперь я понимаю, что еще один пример кода достиг первой точки отладки. – gdelfino

+0

Спасибо! Сегодня он работает с Rails 3.0.7 и не позволяет мне размещать полные URL-адреса с субдоменами во всем мире. –

2

предыдущий ответ правильный, и вообще имя заголовка должно быть заглавными буквами, с префиксом HTTP_ и разделяться подчеркиванием. Например, «If-Modified-Since» заголовок может быть установлен с помощью:

request.env['HTTP_IF_MODIFIED_SINCE'] = Time.now.httpdate 
0

Установки заголовка HTTP для каждого запроса в RSpec также возможно. Добавьте к вашему spec_helper внутри блока RSpec.configure do |config|:

config.before(:each) do |x| 
    x.request.env['HTTP_ACCEPT_LANGUAGE'] = 'de-CH,de;q=0.8,en;q=0.6' 
end 
Смежные вопросы