動かざることバグの如し

近づきたいよ 君の理想に

Rails+RspecでUser-AgentとかHeaderを書き換えてテストする方法

環境

背景

Rspecのテストで、今まではController specsだったが、今ではRequest specsが推奨となっている。

いわゆる type: :request というやつ

で、Request specsでHeaderをカスタマイズした上でテストをしたい。

方法

ググるとみんないろんなやり方をしてたが、Rspec3以降は以下が一番標準的なやり方っぽい。

例えば以下はUser-Agentをmyuseragentに書き換えてアクセスする例

context "ユーザーエージェントを〜でアクセスしたとき" do
  before do
    headers = {
      "user-agent" => "myuseragent",
    }
    get root_path, params: {}, headers: headers
  end
end

ちなみにGETリクエストのparamsは普通のGETパラメータになる