前提・実現したいこと
自作のアプリケーションで、
投稿した内容を削除する機能のテストコードを作成しています。
削除ボタンをクリックした時にレコード数が1減ることを確認したいのですが、
テストを実行すると、削除ボタンを押してもレコード数が変わらないという結果になるので解決したいです。
手動で行う時は問題なく削除できているので、
削除ボタンをクリックさせる指定の仕方が間違っているのかと思いますが自力で解決できませんでした。
発生している問題・エラーメッセージ
ターミナル
Failure/Error: expect{ find_link(title: '削除').click }.to change { Post.count }.by(-1) expected `Post.count` to have changed by -1, but was changed by 0
該当のソースコード
posts_spec.rb
ruby
1RSpec.describe 'delete', type: :system do 2 before do 3 @post1 = FactoryBot.create(:post) 4 end 5 context 'success' do 6 it 'ログインしたユーザーは自らの投稿が削除ができる' do 7 # 投稿したユーザーでログインする 8 visit_with_http_auth new_user_session_path 9 fill_in 'user_email', with: @post1.user.email 10 fill_in 'user_password', with: @post1.user.password 11 find('input[name="commit"]').click 12 expect(current_path).to eq(root_path) 13 # 投稿1 の詳細ページへ遷移する 14 visit post_path(@post1.id) 15 # 投稿1に「削除」ボタンがあることを確認する 16 expect(page).to have_link(title: '削除', href: post_path(@post1.id)) 17 # 投稿を削除するとレコードの数が1減ることを確認する 18 page.accept_confirm do 19 expect{ 20 find_link(title: '削除', href: post_path(@post1.id)).click 21 }.to change { Post.count }.by(-1) 22 end 23 end 24 end 25end
削除ボタンのhtml.erb
erb
1<div class="delete-post-btn"> 2 <%= link_to post_path(@post.id), method: :delete, class: "delete-btn", title: '削除', data: {confirm: "削除しますか?"} do %> 3 <i class="fa fa-trash fa-2x fa-fw "></i> 4 <% end %> 5</div>
補足情報(FW/ツールのバージョンなど)
環境
ruby 2.6.5
rails 6.0.0
'rspec-rails', '~> 4.0.0'
'capybara', '>= 2.15'
あなたの回答
tips
プレビュー