#環境
初めて記事を書かせて頂きます🙇♂️
間違っていたら指摘お願いします
M1
ruby3.1.0
rails 6~
#経緯
一度通ったテストが
RspecでActiveRecord::RecordInvalid:バリデーションに失敗しました
に阻まれて沼ったお話
テスト対象はuserなのに何故か違うテーブルのバリデーションがかかってしまう
#結論
アソシエーションをしていたから
今回作っていたテーブルの関係性を説明します
userテーブル, postテーブル, categoryテーブル
user 1対多 post
user 1対多 category
post 多対1 user
post 多対1 category
category 多対1 user
category 1対多 post
アソシエーションを組む事によって
postを作るにはuser, categoryが必要
categoryを作るのはuserが必要
という風になっていました
#Rspec
spec/requests/posts_spec.rb
let!(:category) { create(:category) }
let!(:new_post) { create(:post) }
let!(:user) { create(:user) }
途中からアソシエーションを組んだのでこのコードがエラーになってしまっていた
順番を変えることによってエラーから抜け出せます
spec/requests/posts_spec.rb
#アソシエーションの関係上
#user→category→postで生成しなければならない
let!(:user) { create(:user) }
let!(:category) { create(:category) }
let!(:new_post) { create(:post) }
#終わり
同じエラーにはまっている方がこれで抜け出せればという思いで書かせて頂きました🧟♂️