ruby-on-rails-3 - 在 Rails 3 Controller 测试中设置 host/remote_addr 和其他环境属性

标签 ruby-on-rails-3 testing controller

在 Rails 2 中,您可以像这样在 Controller 测试中指定主机和其他 Rack 环境属性:

should "spoof host and remote_addr" do
  get "/thing/2", {}, :remote_addr => "192.71.1.2", :host => "somewhere.else"
end

但是,出于某种原因,这在 Rails 3 上不起作用。我尝试使用常规 Controller ,并且 env["HTTP_HOST"]未按预期设置(与 "REMOTE_ADDR" 相同)。我也试过这个:

should "use host and remote_addr" do
  request.env["REMOTE_ADDR"] = "192.71.1.2"
  request.env["HTTP_HOST"] = "git.gittit.it"
  get "/thing/1"
end

这也曾经在 Rails 2 中工作,但不再在 Rails 3 中工作。作为最终测试,我使用解析为裸 Rack 应用程序的路由进行了尝试,结果相同。

如何在 Rails 3 Controller 测试中欺骗主机和 IP 地址?

最佳答案

取决于您在 Controller 中访问它的方式...这对我来说效果很好:

request.stub!(:remote_ip).and_return('192.71.1.2')

此时,当我在我的 Controller 中使用 request.remote_ip 时,我得到 192.71.1.2

关于ruby-on-rails-3 - 在 Rails 3 Controller 测试中设置 host/remote_addr 和其他环境属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13204329/

相关文章:

ruby-on-rails-3 - Ruby on Rails呈现具有动态内容和部分内容的表

ruby-on-rails - Rails 3 : SMTP Settings for Google Apps/Heroku

ios - 导入 Monkeytalk 项目

html - 使用 JUnit/Selenium 查找 HTML 表格单元格

java - Spring 。 Spring如何管理Controller

ruby-on-rails-3 - 使用Jbuilder和Rails 3提高渲染性能

ruby-on-rails - rails - 论坛 :Module 的所有未定义方法

testing - 下面的伪代码中 i 的值是多少?

Laravel 4 - 隐式 Controller 中的 URI 参数

java - 将服务自动连接到 Controller 代理错误