テストコード #2
FactoryBot × 中間テーブル
(spec/factories/room_users.rb) # アソシエーションのみ定義 FactoryBot.define do factory :room_user do association :user association :room end end
(messages_spec.rb) # userとroomを自動で追加 @room_user = FactoryBot.create(:room_user) => <#RoomUser:0x0000000110b662f8 id: 2, room_id: 2, user_id: 4, created_at: Sat, 02 Sep 2023 09:10:04.633423000 JST +09:00, updated_at: Sat, 02 Sep 2023 09:10:04.633423000 JST +09:00>
(コンソール) pry(main)> Room.find(2) => [#<Room:0x0000000110ca1a50 id: 2, name: "New Jersey goblins", created_at: Sat, 02 Sep 2023 09:10:04.631154000 JST +09:00, updated_at: Sat, 02 Sep 2023 09:10:04.631154000 JST +09:00>,
Rails.root.joinレイルズ ルート ジョイン
# トップ階層〜Railsアプリ のパス pry(main)> Rails.root => #<Pathname:/Users/ユーザー名/projects/sample-app> # joinで後ろにパスを結合 pry(main)> Rails.root.join('public/images/test_image.png') => #<Pathname:/Users/ユーザー名/projects/sample-app/public/images/test_image.png>
attach_fileアタッチ ファイルメソッド
input要素[type: file]に、テスト用の画像を添付(アタッチ)できる。
# 引数(input要素のname属性, ファイルのパス) attach_file('message[image]', image_path) # 非表示(display:none;)のinput要素を表示 attach_file('message[image]', image_path, make_visible: true)
create_listクリエイトリスト
# FactoryBotを量産 FactoryBot.create_list(:message, 3, ) # オプションで、カラムの内容を指定できる。 # 外部キーも指定できる。 FactoryBot.create_list(:message, 1, content: 'hoge', room_id: @room_user.room.id)
ドットは3種類
- アソシエーションのドット
- メソッドのドット
- カラムをつなぐドッド