Laravelのテストではデータベースに依存していい ==== 「テストはデータベースに依存すべきではない」という思い込みを捨てられない人が多いので何度でも説明する。 データベースを使わなくていい時は使わない、を基本的な前提として「絶対にデータベースを使わない」は間違い。 LaravelではインメモリSQLiteを使ってデータベースに依存したテストができる。インメモリなので高速。 インメモリSQLiteはLarave4.0にもあるくらい昔から用意されてる機能。 https://github.com/laravel/framework/blob/4.0/src/Illuminate/Database/Connectors/SQLiteConnector.php Sailでは本物のMySQLを使ったテストが標準。インストール時に`phpunit.xml`を書き換えている。遅いのでSailでもインメモリSQLiteを使うことが多いけど。 https://github.com/laravel/sail/blob/1.x/src/Console/Concerns/InteractsWithDockerComposeServices.php#L213 データベースをテストするための機能がいろいろある。 https://laravel.com/docs/11.x/database-testing こういう機能が用意されている以上「テストはデータベースに依存していい」がLaravelの方針。 Laravelの方針を無視してデータベースに依存しないようにすると無駄な苦労することになる。 https://laracasts.com/discuss/channels/testing/testing-repository-in-laravel