Laravelのテストにおける重要なベストプラクティスの一つは、本番環境のデータベースとは完全に分離された専用のテストデータベースを使用することです。
.env.testingファイルを作成し、テスト専用のデータベース設定を定義します:
DB_CONNECTION=sqlite
DB_DATABASE=:memory:
または、MySQL/PostgreSQLの場合:
DB_CONNECTION=mysql
DB_DATABASE=testing_database
use Illuminate\Foundation\Testing\RefreshDatabase;
class ExampleTest extends TestCase
{
use RefreshDatabase; // 各テスト後にデータベースをリセット
public function test_example()
{
// テストコード
}
}
このRefreshDatabaseトレイトを使用することで、各テスト実行後に自動的にデータベースがクリーンな状態にリセットされます。