Ruby on rails 如何在水豚特性规范中设置请求IP?

Ruby on rails 如何在水豚特性规范中设置请求IP?,ruby-on-rails,rspec,capybara,Ruby On Rails,Rspec,Capybara,我在Rails 5.1应用程序中使用RSpec和Capybara作为我的功能规格。我想为单个规范将请求IP伪造为“1.2.3.4” 我已经尝试了以下与恶鬼 before do page.driver.add_headers 'REMOTE_HOST' => '1.2.3.4' end 然而,在我的控制器中放置一个撬杆,我看到request.headers['REMOTE\u HOST']是127.0.0.1我通过存根ActionDispatch::request.\REMOTE\u

我在Rails 5.1应用程序中使用RSpec和Capybara作为我的功能规格。我想为单个规范将请求IP伪造为“1.2.3.4”

我已经尝试了以下与恶鬼

before do
  page.driver.add_headers 'REMOTE_HOST' => '1.2.3.4'
end

然而,在我的控制器中放置一个撬杆,我看到
request.headers['REMOTE\u HOST']
127.0.0.1

我通过存根
ActionDispatch::request.\REMOTE\u ip
解决了这个问题

allow_any_instance_of(ActionDispatch::Request).to receive(:remote_ip) { '1.2.3.4' }


如果可能的话,我更愿意更改实际请求

听起来这比功能规范更适用于控制器规范或请求规范。我想根据请求在视图中测试不同的行为,这可以从视图规范、请求规范或控制器规范中完成(如果您告诉它渲染视图)。您可以修改请求的所有位置,和/或模拟/存根的正常位置(与功能测试不同)