1

Rails 2では、次のようにコントローラーテストでホストおよびその他のRackenvプロパティを指定できます。

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

ただし、何らかの理由で、これはRails 3では機能しません。通常のコントローラーで試しましたが、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では機能しなくなりました。最終テストとして、ベアラックアプリに解決されるルートでこれを試しましたが、同じ結果になりました。

Rails 3コントローラーテストでホストとIPアドレスをスプーフィングするにはどうすればよいですか?

4

1 に答える 1

1

コントローラーでどのようにアクセスしているかによって異なります...これは私にとってはうまくいきました:

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

コントローラーで使用するrequest.remote_ipと、192.71.1.2 になります。

于 2012-11-02T23:43:52.033 に答える