ひとつのexpectで複数のchangeを確認する方法

ユーザーに関するフィーチャーテストで、ユーザーを削除したらそのユーザーに関連するモデルも削除されることをテストしたいと思いました。

テスト方法

spec/features/users_spec.rb
require 'rails_helper'

RSpec.feature "Users", type: :feature do
  scenario 'user deletes a user' do
    user = FactoryBot.create(:user)
    user.funds << FactoryBot.build(:fund)
    user.ratios << FactoryBot.build(:ratio)
    user.save

    visit root_path
    click_link 'ログイン'
    fill_in 'メールアドレス', with: user.email
    fill_in 'パスワード', with: user.password
    click_button 'ログイン'

    expect{
      click_button '削除'
      page.driver.browser.switch_to.alert.accept

      expect(page).to have_content '投資信託管理サービス'
    }.to change(User, :count).by(-1).and change(Fund, :count).by(-1).and change(Ratio, :count).by(-1)
  end
end
削除ボタンをクリックすると確認ダイアログが表示されるので、Selenium Chromeというドライバーを使用しています。
下から3行目、ひとつのexpectに対してandでchangeを繋いでいき3つのモデルとも削除されているかというテストをしています。
$ rspec spec/features

Users
Capybara starting Puma...
* Version 3.12.1 , codename: Llamas in Pajamas
* Min threads: 0, max threads: 4
* Listening on tcp://127.0.0.1:59581
  user deletes a user

Finished in 11.78 seconds (files took 6.52 seconds to load)
2 examples, 0 failures
テストを実行するとブラウザが立ち上がり自動でログインしてユーザー削除をテストしてくれます。

関連記事

【Rails】RSpecを使った自動テスト《ベストプラクティスとTips編》
# はじめに Railsでアプリケーションを開発する際、品質を担保するためにテストは欠かせません。その中でも、RSpecは多くの開発者に愛用されているテストフレームワークです。 今回は、RSpecを使ったRailsアプリケーションのテスト方 [...]
2024年7月11日 23:33
【Rails】RSpecを使った自動テスト《CI/CDパイプラインへの統合編》
# はじめに Railsでアプリケーションを開発する際、品質を担保するためにテストは欠かせません。その中でも、RSpecは多くの開発者に愛用されているテストフレームワークです。 今回は、RSpecを使ったRailsアプリケーションのテスト方 [...]
2024年7月11日 23:20
【Rails】RSpecを使った自動テスト《テストのパフォーマンス改善編》
# はじめに Railsでアプリケーションを開発する際、品質を担保するためにテストは欠かせません。その中でも、RSpecは多くの開発者に愛用されているテストフレームワークです。 今回は、RSpecを使ったRailsアプリケーションのテスト方 [...]
2024年7月11日 23:12
【Rails】RSpecを使った自動テスト《テストの共通化編》
# はじめに Railsでアプリケーションを開発する際、品質を担保するためにテストは欠かせません。その中でも、RSpecは多くの開発者に愛用されているテストフレームワークです。 今回は、RSpecを使ったRailsアプリケーションのテスト方 [...]
2024年7月11日 23:05
【Rails】RSpecを使った自動テスト《モック/スタブ編》
# はじめに Railsでアプリケーションを開発する際、品質を担保するためにテストは欠かせません。その中でも、RSpecは多くの開発者に愛用されているテストフレームワークです。 今回は、RSpecを使ったRailsアプリケーションのテスト方 [...]
2024年7月11日 18:25
【Rails】RSpecを使った自動テスト《ファクトリー編》
# はじめに Railsでアプリケーションを開発する際、品質を担保するためにテストは欠かせません。その中でも、RSpecは多くの開発者に愛用されているテストフレームワークです。 今回は、RSpecを使ったRailsアプリケーションのテスト方 [...]
2024年7月11日 17:55
【Rails】RSpecを使った自動テスト《システムスペック編》
# はじめに Railsでアプリケーションを開発する際、品質を担保するためにテストは欠かせません。その中でも、RSpecは多くの開発者に愛用されているテストフレームワークです。 今回は、RSpecを使ったRailsアプリケーションのテスト方 [...]
2024年7月11日 17:07
【Rails】RSpecを使った自動テスト《リクエストスペック編》
# はじめに Railsでアプリケーションを開発する際、品質を担保するためにテストは欠かせません。その中でも、RSpecは多くの開発者に愛用されているテストフレームワークです。 今回は、RSpecを使ったRailsアプリケーションのテスト方 [...]
2024年7月11日 16:06