Laravel11で新規プロジェクト作成後はテスト用のデータベース設定が必須 ==== Laravel11でSQLiteがデフォルトに変わったけどphpunit.xmlのインメモリSQLiteは無効なまま。何も設定しないままだとテストでSQLiteのデータベースが壊される。 ``` // phpunit.xml ``` 再現手順 ``` laravel new laravel11-sqlite --breeze --stack=blade --phpunit --database=sqlite --dark cd laravel11-sqlite php artisan db:seed INFO Seeding database. ``` tinkerで見るとこの時点ではseederで作ったUserが存在している。 ``` php artisan tinker > User::first() = App\Models\User {#5097 id: 1, name: "Test User", ``` テスト実行後に見るとUserが消されている。 ``` php artisan test php artisan tinker > User::first() = null ``` テスト時にも`database/database.sqlite`が使われて上書きされた。 流石にこれは変なのでいずれ修正されるかもしれないけどそれまでは自分で対応。 ``` ``` Sailを使っててもインメモリSQLiteに変えたほうがいい。 SQLiteでは使えない機能があって本物のMySQLなどを使ったテストが必要なプロジェクトはあるけどそんな規模のプロジェクトなら勝手に判断できる。 大半のLaravelプロジェクトではインメモリSQLiteで十分。