Настройка заголовков http RSpec 2.4 / Rails 3 - PullRequest
17 голосов
/ 09 февраля 2011

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

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

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

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

Любая подсказка о том, как решитьэто?

Ответы [ 3 ]

30 голосов
/ 09 февраля 2011

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

request.env['HTTP_HOST'] = 'es.mysite.local'
get 'index'
2 голосов
/ 30 марта 2013

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

request.env['HTTP_IF_MODIFIED_SINCE'] = Time.now.httpdate
0 голосов
/ 04 декабря 2013

Установка заголовка 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
...