テストで使うGemを導入
Gemfileの中のgroup :development, :test do ~ endとある「do ~ endの間」に記述
rspec-rails
factory_bot_rails
faker
% bundle install
ローカルサーバーを再起動
% rails s
導入したRSpecを使用できるようにする
% rails g rspec:install
テスト結果のログを見やすくする
.rspec
--require spec_helper
--format documentation
エラーメッセージを英語に設定
spec/rails_helper.rb
# 中略
I18n.locale = "en"
# RSpec.configure do |config| 〜 end の外に記載
RSpec.configure do |config|
# 中略
end
FactoryBotを準備
specディレクトリの中にfactoriesディレクトリを作成し、users.rb, rooms.rb, messages.rbの3つのファイルを作成
fakerを使って情報をFactoryBotに指定
ユーザー情報をFactoryBotで指定
spec/factories/users.rb
チャットルーム情報をFactoryBotで指定
spec/factories/rooms.rb
メッセージ情報をFactoryBotで指定
spec/factories/messages.rb
画像投稿にActive Storageを使う場合、FactoryBotにActive Storageの記述をする必要がある
テスト用のダミー画像を用意
「public」ディレクトリの中に「images」というディレクトリを作成
テスト用のダミー画像「test_image.png」を、imagesディレクトリの中に配置
画像は生成したインスタンスに紐付ける必要がある
afterというメソッドを用いて、インスタンス生成後に画像が保存されるようにする
afterメソッドは任意の処理の後に指定の処理を実行することができる
afterメソッドを用いて、生成するダミーデータに画像を添付
spec/factories/messages.rb
コンソールでFactoryBotが使用できることを確認
% rails c
pry(main)> FactoryBot.create(:user)
pry(main)> FactoryBot.create(:room)
pry(main)> FactoryBot.create(:message)
画像がActive Storageに保存できているか確認
pry(main)> message = FactoryBot.create(:message)
# 省略
pry(main)> message.image.attached?
# 省略
=> true
テストを記述するファイルを用意
テストコードを記述するファイルを各モデル分の3つ用意
% rails g rspec:model user
% rails g rspec:model room
% rails g rspec:model message
3つのファイルの不要な記述を削除
pending "add some examples to (or delete) #{__FILE__}" # 削除
これで、RSpecを用いてテストを行う準備が完了