gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 20:45:23 24 4
gpt4 key购买 nike

在 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/

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