ユーザー情報編集(user#update)のテストに関して疑問が生じたためご教示いただけますと幸いです。
以下のようなsystem_specを作成し、ユーザーの情報変更が、フォーム越しの変更にも、patchでの変更にも対応できていることを調べたいと思っています。
ruby
1#/spec/system/user_spec.rb 2 3RSpec.describe "User", type: :system do 4 let(:tom){FactoryBot.create(:user,name:'tom')} 5 ~ 6 context 'show(ユーザー詳細)' do 7 login(tom) 8 visit user_path(tom) 9 click_link '設定' 10 fill_in '名前', with: 'neo_tom' 11 click_button '更新する' 12 expect(tom.reload.name).to eq 'neo_tom' #これは通る 13 14 patch user_url(tom), params:{id:tom.id, user:{name:'new_neo_tom'}} 15 expect(tom.reload.name).to eq 'new_neo_tom' #これが通らない 16 end 17end
最初のフォーム越しでの変更は狙い通り通りますが、2番目patch経由での変更が通りません。tom.nameはnew_tomのままです。
ご質問
① このテストを通す方法(名前をpatch越しにnew_neo_tomに変更する方法)を教えてください
② そもそもpatchの検証をする場所としてsystem_specは正しいでしょうか?こういうテストは全部コントローラーテストでやるべきですか?
よろしくお願いいたします。
あなたの回答
tips
プレビュー