【问题标题】:How can I set the request IP in a Capybara feature spec?如何在 Capybara 功能规范中设置请求 IP?
【发布时间】:2017-07-13 23:29:38
【问题描述】:

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

我已经用 Poltergeist 尝试了以下...

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

但是,在我的控制器中放置一个窥探器,我发现 request.headers['REMOTE_HOST'] 是 127.0.0.1。

【问题讨论】:

  • 听起来像这样更适用于控制器规范或请求规范而不是功能规范。
  • 我想根据请求IP在我的视图中测试不同的行为
  • 这可以通过视图规范或请求规范或控制器规范来完成(如果您告诉它呈现视图)。您可以修改请求的所有地方,和/或正常模拟/存根事物的地方(与功能测试不同)

标签: ruby-on-rails rspec capybara


【解决方案1】:

我通过存根ActionDispatch::Request#remote_ip解决了这个问题

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

http://guides.rubyonrails.org/action_controller_overview.html#the-request-object

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

【讨论】:

    猜你喜欢
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-13
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    相关资源
    最近更新 更多