コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

Request spec において、リクエストされたURLのホスト名をテストの内容に含めたい場合

アクセスしてきたURLのホスト名がexample.co.jpのときとexample.comのときで振る舞いが変わる みたいなControllerへのrsepcをかくときのかき分け方

環境

rails (5.2.0)
rspec (3.7.0)

やり方

普通にheadersで指定するハッシュに

{ "Host" => "example.co.jp" }

にようにHostを指定すればいい。

let(:header_hash) { {
    "Content-Type" => "application/json",
    "Host" => host_name
} }
let(:params) { {id: 1} }
let(:host_name) { "example.co.jp" }
subject { post user_index_path, params: params.to_json, headers: header_hash }

参考リンク