上のイシューにある通り、FactoryBotで関連先を作るときの挙動が変更になっていたようです。
factory_bot, factory_bot_rails いずれも 5.0.0 以上。
仕事で(同僚が)ちょうどアップデートしようとしていたところ、テストが大量に失敗してたどり着きました。
手伝ったのでネタちょうだいと言ったらくれるとのこと。
レコードのIDが見当たらないとかのエラーでした(よく覚えてない)。
具体的な挙動
イシューからの例を拝借。
FactoryBot.define do
factory :user do
association :doggie
end
end
このとき、
FactoryBot.build :user
のように build したとき、
- 4.11 まで : 関連先の doggie を create する
- 5.0.0 : 関連先の doggie を build する
どゆこと?
イシューからリンクがありましたが、公式のGetting Started
In factory_bot 5, associations default to using the same build strategy as their parent object
factory_bot 5では、関連先は親オブジェクトと同じbuildストラテジを利用するのがデフォルトです
前の挙動が良い場合
可能であれば失敗するテストをひとつずつ修正していくのが一番だとは思いますが、いろんな事情がありますよね。
さっきのトコ、少し下に
If you want to continue using the old behavior, you can set the use_parent_strategy configuration option to false.
前の挙動がよければ、 use_parent_strategy オプションを false に設定することもできます
FactoryBot.use_parent_strategy = false
これを失敗するテストの周辺なり spec/rails_helper.rb
なりに書いておけば大丈夫なはずです。