概要
- FeatureテストにてsetUp()関数にてfreshマイグレーションとシーディングを行った時にエラーが発生したので解決までの経緯をまとめる。
ご注意
- 本知見はhttps://zenn.dev/y640/articles/qiita-20210807-1db7786d2db36cfabe05の記事に記載されていた内容にて筆者が体験したことを記載しております。
- 解決策は筆者の知見ではなく引用元記事の筆者様のものです。
エラー発生までの経緯
-
任意のFeatureテストクラスを作成しsetUp()関数に下記のように記載を行った。
FooTest.phpuse RefreshDatabase; public function setUp(): void { parent::setUp(); Artisan::call('migrate:fresh --seed'); }
エラー
-
テストコードを実行したところエラーが発生した。
PDOException: There is no active transaction
エラー解決までの経緯
- エラーで検索したところ下記の記事を発見した。
- どうやら呼んでいるトレイトがRefreshDatabaseだとダメなようだ。DatabaseMigrationsトレイトを呼んで見ると正常にテストが実行できた。
謝辞
- 本問題はhttps://zenn.dev/y640様のご知見により直ぐに解決する事ができました。改めてお礼申し上げます。