前提・実現したいこと
今Railsで制作しているアプリでチャット機能を実装しており、RSpecでモデルの単体テストを行っています。
チャットのグループとユーザーの中間テーブル(group_user)で、同じgroup_idとuser_idが保存されないことをテストしたいのですが、
うまくいかないので解決法を教えていただけますと幸いです。
発生している問題・エラーメッセージ
Failures: 1) GroupUser#create 一つのグループに同じユーザーが2回以上保存されないこと Failure/Error: expect(group_user.errors[:group_id]).to include("はすでに存在します。") expected [] to include "はすでに存在します。" # ./spec/models/group_user_spec.rb:14:in `block (3 levels) in <top (required)>'
該当のソースコード
▼spec/models/group_user_spec.rb
ruby
1require 'rails_helper' 2 3describe GroupUser do 4 describe '#create' do 5 it "一つのグループに同じユーザーが2回以上保存されないこと" do 6 create(:group_user) 7 group_user = create(:group_user) 8 group_user.valid? 9 expect(group_user.errors[:group_id]).to include("はすでに存在します。") 10 end 11 end 12end
▼spec/factories/group_user.rb
ruby
1FactoryBot.define do 2 factory :group_user do 3 group_id {1} 4 user_id {1} 5 group 6 user 7 end 8end
▼app/models/group.rb
ruby
1class Group < ApplicationRecord 2 has_many :group_users, dependent: :destroy 3 has_many :users, through: :group_users 4 has_many :messages, dependent: :destroy 5end
▼app/models/user.rb
ruby
1class User < ApplicationRecord 2 has_many :group_users, dependent: :destroy 3 has_many :groups, through: :group_users 4 has_many :messages, dependent: :destroy 5end
▼app/models/group_user.rb
ruby
1class GroupUser < ApplicationRecord 2 belongs_to :group 3 belongs_to :user 4 validates_uniqueness_of :group_id, scope: :user_id 5end
試したこと
コンソールでテストと同じことを試した結果、ターミナルでは以下のように表示されました。
この結果とコードを見比べてみたのですが、間違いがわかりませんでした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/30 02:55