如何为所有水豚功能设置http标头

时间:2013-07-06 14:41:15

标签: ruby-on-rails testing capybara

我使用rspec,capybara。我从http标头中设置了语言环境,如下所示

  before_filter :set_locale

  def extract_locale_from_accept_language_header
    request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first
  end

  def set_locale
    return I18n.locale = current_user.locale if user_signed_in?
    I18n.locale = extract_locale_from_accept_language_header || I18n.default_locale
  end

当我运行我的功能测试时,我得到错误'NilClass'的未定义方法scan。 显然,水豚没有设置http标头。

如何为我的所有功能设置http标头或以其他方式避免这种情况?

2 个答案:

答案 0 :(得分:12)

根据您的浏览器驱动程序,您可以像这样全局设置标题:

  Capybara.current_session.driver.headers = { 'Accept-Language' => 'de' }
  Capybara.current_session.driver.header('Accept-Language', 'de')

答案 1 :(得分:5)

您可以像这样设置标题:

RSpec.configure do |config|
  config.before(:each) do
    page.driver.header 'Accept-Language', 'de'
  end
end

来源:https://github.com/thoughtbot/capybara-webkit#non-standard-driver-methods

  

header:为后续请求设置给定的HTTP标头

     

page.driver.header' Referer',' https://www.thoughtbot.com'

相关问题