【Rspec】turbo_streamを使っているときのrequest specの書き方
はじめに
Rails7 からはバリデーションの失敗時は status: :unprocessable_entity
をつける必要があります。
しかし request spec で書いている時、バリデーション失敗時でにリクエストのステータスが 200
で帰ってきてしまう
やりたい事
バリデーション失敗時のレスポンスのステータスが 422
になるようにする
環境
- Rails 7.0.22
- Ruby 3.1.1
- rspec-rails 5.1.0
request spec
Rails7 から form の送信はデフォルトで Turbo_stream を利用するようになりました。
turbo_stream 利用時はレスポンスのヘッダーに Accept: 'text/vnd.turbo-stream.html'
が追加されるので、spec の送信時にもヘッダーを追加する必要があります。
require 'rails_helper'
RSpec.describe 'Registrations', type: :request do
let(:user) { create(:user) }
describe 'POST /users' do
# 省略
context 'failure' do
it 'リクエストが失敗(nameが空)' do
post user_registration_path, params:
{ user: {
name: '',
email: '[email protected]',
password: 'password',
password_confirmation: 'password' } },
xhr: true, headers: { Accept: 'text/vnd.turbo-stream.html' } #この行を追加する
end
end
end
end
参考
参考をなった記事たち
Author And Source
この問題について(【Rspec】turbo_streamを使っているときのrequest specの書き方), 我々は、より多くの情報をここで見つけました https://qiita.com/tomoronn3/items/03ff4ea46b197a71d877著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .