gpt4 book ai didi

ruby-on-rails - 在 RSpec 请求规范中使用 Capybara 时,设置自定义请求 header 的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-04 12:43:03 24 4
gpt4 key购买 nike

我正在用 set_headers 方法修补 Capybara::Session,该方法分配给 Capybara::RackTest::Browser 的选项属性(我已将它从 attr_reader 更改为 attr_accessor)。

补丁:

class Capybara::RackTest::Browser
attr_accessor :options
end

class Capybara::Session
def set_headers(headers)
if driver.browser.respond_to?(:options=) #because we've monkey patched it above
options = driver.browser.options
if options.nil? || options[:headers].nil?
options ||= {}
options[:headers] = headers
else
options[:headers].merge!(headers)
end
else
raise Capybara::NotSupportedByDriverError
end
end
end

在我的请求规范中,我正在做:
page.set_headers("REMOTE_ADDR" => "1.2.3.4")
visit root_path

这有效,但我想知道是否有更好的方法,仅能够在请求上设置自定义 remote_ip/remote_addr 似乎有点矫枉过正。有什么想法吗?

最佳答案

如果您希望在所有请求上全局设置 header ,您可以使用以下内容:

Capybara.register_driver :custom_headers_driver do |app|
Capybara::RackTest::Driver.new(app, :headers => {'HTTP_FOO' => 'foobar'})
end

rack_test_driver_spec.rb在 Capybara 1.1.2 和 Capybara 的问题 #320 中, Setting up HTTP headers .

关于ruby-on-rails - 在 RSpec 请求规范中使用 Capybara 时,设置自定义请求 header 的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7062129/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com