【Rails】RSpecを使った自動テスト《基本編》
![](https://autovice.s3.ap-northeast-1.amazonaws.com/uploads/article/picture/204/%E7%84%A1%E9%A1%8C_38_.png?X-Amz-Expires=600&X-Amz-Date=20240908T005135Z&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIASDZCAGFGH4Y2EDPG%2F20240908%2Fap-northeast-1%2Fs3%2Faws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=5aca0bca1d30edd8be96df45f7425146f4488b1389c36c201b6405b3f11f118b)
はじめに
Railsでアプリケーションを開発する際、品質を担保するためにテストは欠かせません。その中でも、RSpecは多くの開発者に愛用されているテストフレームワークです。
今回は、RSpecを使ったRailsアプリケーションのテスト方法について、実践的な視点から解説していきます。
RSpecについて
RSpe ...
【Rails】Capybaraのfill_inメソッドを実行すると「既存レコードの内容+指定した内容」がセットされる事象の原因と対処【RSpec】
![](https://autovice.s3.ap-northeast-1.amazonaws.com/uploads/article/picture/174/rspec.jpg?X-Amz-Expires=600&X-Amz-Date=20240908T005135Z&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIASDZCAGFGH4Y2EDPG%2F20240908%2Fap-northeast-1%2Fs3%2Faws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=d643ea62dafcac65e3fc79329b176857ef87e7f5cf8592a43c2c84d3fba66f59)
はじめに
RSpec + Capybaraを使用して、Railsアプリの統合テストを実装しています。とあるモデルの編集画面において、入力フォームの内容を書き換えた上で送信し、レコードが更新されることを確認します。
入力フォームの内容を書き換えるにはCapybaraのfill_inメソッドを使います。
rb
fi ...
ひとつのexpectで複数のchangeを確認する方法
![](https://autovice.s3.ap-northeast-1.amazonaws.com/uploads/article/picture/22/rspec.jpg?X-Amz-Expires=600&X-Amz-Date=20240908T005135Z&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIASDZCAGFGH4Y2EDPG%2F20240908%2Fap-northeast-1%2Fs3%2Faws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=25fe092d68a75db193e9ab3513e2ce50c051179fc0421c5095832148268dccf5)
ユーザーに関するフィーチャーテストで、ユーザーを削除したらそのユーザーに関連するモデルも削除されることをテストしたいと思いました。
テスト方法
spec/features/users_spec.rb
require 'rails_helper'
RSpec.feature "Users", type: ...
Active Record - 関連付けモデルのテスト方法
![](https://autovice.s3.ap-northeast-1.amazonaws.com/uploads/article/picture/21/rspec.jpg?X-Amz-Expires=600&X-Amz-Date=20240908T005135Z&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIASDZCAGFGH4Y2EDPG%2F20240908%2Fap-northeast-1%2Fs3%2Faws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=1082572bdaf5b55ecc6346aff412db9fc11aa5c0d23c7be9ff40bb0de261877d)
Modelの設定
UserモデルとFundモデルがあり、Userモデルは複数のFundモデルを持つ関連付けの設定は以下のようになります。
オプションとして、Userモデルが削除されたときに関連するFundモデルも削除することとします。
app/models/user.rb
class User < Appl ...
RSpecの勉強をはじめました
![](https://autovice.s3.ap-northeast-1.amazonaws.com/uploads/article/picture/19/rspec.jpg?X-Amz-Expires=600&X-Amz-Date=20240908T005135Z&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIASDZCAGFGH4Y2EDPG%2F20240908%2Fap-northeast-1%2Fs3%2Faws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=206973cc6d9d7df5e65fcd090963d5441b6acfaf0558cb56e2adbd0f09033170)
今日からRSpecの勉強をはじめました。教材はEveryday Rails - RSpecによるRailsテスト入門です。
RSpecについての教材ですが、ところどころテスト自動化における基本理念のような記述もあり、テスト自動化にあまり慣れていない人にも易しい内容になっています。
私は仕事で少しだけJavaのJ ...
![](/assets/profile-1055d2f9a1a248bf051584d3572c2f2d79d103e956e0fcee48f1cab5cd40472b.jpg)
坂井 光太郎 / Sakai Kotaro
Ruby on Rails を中心とした Web アプリ開発全般に関する技術情報をまとめています。業務に関するご依頼・ご相談、当サイトに対するご感想やメッセージはコンタクトフォームからお気軽にお問い合わせください。