Introduzione
Laravel include di serie i meccanismi per testare in modo sicuro e veloce le funzionalità che usano il database. Combinando i trait per il reset del database, le model factory, i seeder e le asserzioni dedicate crei test difficili da rompere. Il punto di partenza èRefreshDatabase. Nella maggior parte dei casi mantiene l’indipendenza dei test più rapidamente di un reset completo.
Reset del database dopo ogni test
Per evitare che i dati di un test influenzino il successivo, usa i trait di reset del database.RefreshDatabase verifica se lo schema è aggiornato. Se lo è, esegue il test in una transazione; se no, esegue prima le migration.
Se preferisci un reset completo ogni volta anziché la transazione, usa questi trait.
Model factory
Per preparare dati prima di un test, con le model factory generi modelli Eloquent in modo conciso. Per dettagli su definizioni, state e relazioni consulta Factory Eloquent.Esecuzione dei seeder
Per inserire dati durante il test usaseed(). Senza argomenti esegue DatabaseSeeder; con un argomento esegue un seeder specifico (o un array).
RefreshDatabase, aggiungi l’attribute #[Seed] alla classe base di test.
#[Seeder(...)].