環境
Ruby 2.5.0
RSpec 3.7.1
Rails 5.2.0
Request specのget/postメソッドでリクエストヘッダーに値を設定するには
Rails5から推奨されているRequest spec。
Controller specと違い、get/post時にリクエスト先のURLを相対パスで指定できるので使いやすいのですが、
リクエストヘッダーに値をセットしないとアプリ側に仕込まれた独自認証を突破できず困っていた。
で、色々と試行錯誤した結果、以下で期待通りの動作。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
describe 'Sample' do before do @json_params = ({ message: 'hello!' }).to_json @headers = { 'Content-Type'= 'application/json', 'Accept'= 'application/json', 'TEST_SIGNATURE'= '123456789asdfghjk' } end it 'set header' do post 'path/to/endpoint', params: @json_params, headers: @headers expect(response.status).to eq 200 end end |
getも同じ引数で動作するようです。
参考: http://www.kozgun.net/2017/08/04/request-tests-fail-after-upgrading-to-rails-5.html