Rails4 + RSpec3 のrequests specでredirect後の処理を検証したい時、以下コードのようにheaders部分にIPアドレスを指定しても無視されてしまう。(ちなみにCapybaraだとセッションの検査ができなかったのでできればrspecで検査したいという状況だった)
before do
params = {}
headers = { 'REMOTE_ADDR' => '192.168.0.1' }
get_via_redirect photos_url, params, headers
end
解決方法の結論
実際にIPアドレスを取得するのに使っているメソッド、例えばActionDispatch::Request#remote_ip
にmockを設定すればよい。
before do
params = {}
allow_any_instance_of(ActionDispatch::Request).to receive(:remote_ip).and_return('192.168.0.1')
get_via_redirect photos_url, params, headers
end
調べた
どう考えてもリダイレクト先でヘッダーの指定が無視されているので、コードを追ってみた