【问题标题】:How can I set http header for all capybara features如何为所有 capybara 功能设置 http 标头
【发布时间】:2013-07-06 14:41:14
【问题描述】:

我使用 rspec,水豚。我从 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

当我运行我的功能测试时,我收到错误“未定义的方法scan for NilClass”。 显然水豚不设置http标头。

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

【问题讨论】:

标签: ruby-on-rails testing capybara


【解决方案1】:

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

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

【讨论】:

  • 它似乎并不“坚持”所有功能和场景。知道为什么吗?
  • spec_helper.rb 中,它包含在每个功能文件中。
  • 尝试在配置中的每个块之前添加它
  • 那行得通。非常感谢你。供将来参考,这里是rspec syntax for that
  • 如何做一个测试呢?
【解决方案2】:

您可以这样设置标题:

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

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

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

【讨论】:

  • 只有在使用 WebKit 驱动程序的情况下才能确定它是否有效。
猜你喜欢
  • 2017-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-01
  • 1970-01-01
  • 2020-11-12
相关资源
最近更新 更多