環境
- Rails 6.1.3.2
- RSpec 3.10
エラー
ActiveRecord::InvalidForeignKey
|
|
外部キーの整合性が取れていない。
CicrleCIでのテスト時に下記エラーが発生して落ちることがあった。落ちないこともあったし、ほとんどのローカルでは再現できなかった。
ActiveRecord::ConnectionNotEstablished
|
|
DBとのコネクションが切れている。
ローカルではこのエラーは発生していた。
解消法
|
|
の記述を追加する。
ActiveJobが使っていないけど……と思っていたけど、ActiveStorageの内部で非同期実行が行われていた。
なので、テスト環境では同期実行を行うようにする。
rspecでDBコネクションエラーが発生するようになった話 - Qiita
また、ActiveJob::TestHelper
をincludeして、perform_enqueued_jobs
で処理を囲むことで特定の処理だけ同期実行することができる。
|
|
ActiveJob::TestHelper
RSpec でキューイングした ActiveJob を同期実行する - Qiita
おわりに
このエラーは@kazu20200705さんがローカルで再現できたので検証してくれて解消できました。
ありがとうございました。
【ダレカタスケテ】
— END (@aiandrox) June 17, 2021
ActiveRecord::InvalidForeignKey:
Mysql2::Error: Cannot add or update a child row: a foreign key constraint fails (`circle_test`.`active_storage_attachments`, CONSTRAINT `fk_rails_c3b3935057` FOREIGN KEY (`blob_id`) REFERENCES `active_storage_blobs` (`id`))