Come generare e utilizzare record falsi con le fabbriche di modelli di Laravel
Pubblicato: 2023-04-28I test sono essenziali per lo sviluppo web. Le fabbriche di modelli di Laravel definiscono i record del database in modo prevedibile e facilmente replicabile in modo che i test delle app siano coerenti e controllati. Le fabbriche di modelli definiscono un set di attributi predefiniti per ciascuno dei tuoi modelli Eloquent.
Ad esempio, se stai realizzando un'app di blog che consente ad autori e moderatori di approvare i commenti prima che vengano pubblicati, dovresti verificare se la funzione funziona correttamente prima di distribuirla ai tuoi utenti. Tutto ciò richiede dati di test.
Per testare l'app di blogging descritta sopra, hai bisogno dei dati dei commenti per imitare e testare la funzionalità della tua applicazione. Laravel ti consente di farlo senza ricevere commenti dagli utenti reali utilizzando le fabbriche di Laravel e Faker per generare dati falsi.
Questo articolo spiega come ottenere i dati dei commenti senza commenti da utenti reali.
Prerequisiti
Per completare questo tutorial, devi avere familiarità con quanto segue:
- XAMPP
- Compositore
XAMPP è una distribuzione Apache gratuita e facile da installare che contiene PHP, Perl e MariaDB, un database MySQL. Questo tutorial utilizza l'ultima versione, 8.1.10, che installa PHP 8.1.10. Leggi questo articolo se installi XAMPP per MacOS o questa guida per Linux. Questo tutorial utilizza XAMPP su Windows.
Composer è uno strumento che ti consente di definire, installare e scaricare i pacchetti da cui dipende la tua app Web in fase di sviluppo e produzione. Questo tutorial utilizza la versione v2.4.4 di Composer, che richiede PHP versione 7.2+. Usi Composer per installare il programma di installazione di Laravel per questo tutorial.
Puoi anche scaricare il codice completo per il progetto da seguire.
Come impostare il progetto
In questa sezione, creerai un progetto Laravel e lo collegherai a un database. Diamo un'occhiata a tutto ciò che comporta e come realizzarlo.
Installa il programma di installazione di Laravel
Per creare rapidamente un progetto Laravel, installa il programma di installazione di Laravel:
composer global require laravel/installer
Questo codice installa il programma di installazione di Laravel a livello globale sulla tua macchina.
Crea un progetto Laravel
Successivamente, crea un progetto Laravel eseguendo quanto segue:
laravel new app-name
Questo codice avvia un nuovo progetto Laravel e installa tutte le dipendenze:
Un altro modo più semplice per installare Laravel è utilizzare direttamente Composer.
composer create-project laravel/laravel app-name
Non è necessario installare il programma di installazione di Laravel quando si utilizza il metodo sopra.
Avvia l'app
Ora puoi cambiare la directory in nome-app e avviare il progetto utilizzando lo strumento dell'interfaccia della riga di comando (CLI) di Laravel, Artisan:
php artisan serve
Questo codice avvia il progetto e lo connette a localhost:8000 oa qualsiasi altra porta disponibile se la porta 8000 è in uso. Su localhost:8000, dovresti vedere qualcosa del genere:
Crea una banca dati
Per connettere la tua app a un database, devi creare un nuovo database utilizzando l'interfaccia utente grafica PHPMyAdmin di XAMPP. Vai su localhost/phpmyadmin e fai clic su Nuovo nella barra laterale:
L'immagine sopra mostra il modulo Crea database con app_name come nome del database.
Fare clic su Crea per creare un database.
Modifica il file .env
Per connettere la tua app a un database, devi modificare la parte DB del file .env :
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=app_name DB_USERNAME=root DB_PASSWORD=
Questo codice riempie le credenziali del database con il nome del database, il nome utente, la porta, la password e l'host. Ora sei pronto per iniziare a creare fabbriche e modelli.
Nota: sostituire i valori con le credenziali del database. Inoltre, se si verifica l'errore "Accesso negato per l'utente", inserire i valori per DB_USERNAME
e DB_PASSWORD
tra virgolette.
Come generare dati falsi
Dopo aver creato l'app e averla collegata al database, ora puoi creare i file necessari per generare dati falsi nel database.
Creare il modello di commento
Creare il file modello per interagire con le tabelle del database. Per creare un modello, usa Artisan:
php artisan make:model Comment
Questo codice crea un file Comment.php all'interno della cartella app/M odels con del codice boilerplate. Aggiungere il seguente codice sotto use HasFactory;
linea:
protected $fillable = [ 'name', 'email', 'body', 'approved', 'likes' ];
Questo codice elenca i campi che vuoi consentire assegnazioni di massa perché Laravel protegge il tuo database dalle assegnazioni di massa per impostazione predefinita. Il file del modello di commento dovrebbe ora apparire così:
Crea il file di migrazione
Dopo aver creato il file modello e aver dichiarato l'array $fillable
, è necessario creare il file di migrazione utilizzando il comando seguente:
php artisan make:migration create_comments_table
Nota: la convenzione di denominazione per la creazione di migrazioni in Laravel è generalmente snake_case
, nota anche come underscore_case
. La prima parola è l'azione, la seconda parola è un plurale del modello e l'ultima parola è la caratteristica che viene creata all'interno del progetto. Ciò significa che scriverai create_books_table
durante la creazione di una migrazione per un modello Book.
Questo codice crea un file denominato yyyy_mm_dd_hhmmss_create_comments_table all'interno della cartella database/migrations .
Successivamente, modifica la funzione up all'interno di yyyy_mm_dd_hhmmss_create_comments_table :
public function up() { Schema::create('comments', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('email'); $table->longText('body'); $table->boolean('approved'); $table->integer('likes')->default(0); $table->timestamps(); }); }
Questo codice crea uno schema che crea una tabella con le colonne: id
, name
, email
, body
, approved
, likes
e timestamps
.
Eseguire le migrazioni
La creazione e la modifica del file delle migrazioni non farà nulla finché non le esegui utilizzando la riga di comando. Se guardi il gestore del database, è ancora vuoto.
Esegui le migrazioni utilizzando Artisan:
php artisan migrate
Questo comando esegue tutte le migrazioni all'interno del database/migrazioni perché è la prima migrazione dalla creazione dell'app:
L'immagine seguente mostra tutti i file di migrazione che hai eseguito. Ognuno rappresenta una tabella nel database:
Crea il file CommentFactory
Crea un file factory che contenga la tua funzione di definizione. Per questa dimostrazione, creerai una fabbrica usando Artisan:
php artisan make:factory CommentFactory.php
Questo codice crea un file CommentFactory .php all'interno della cartella database/factories .
La funzione di definizione
La funzione all'interno di CommentFactory definisce come Faker genera dati falsi. Modificalo in modo che assomigli a questo:
public function definition() { return [ 'name' => $this->faker->name(), 'email' => $this->faker->email(), 'body' => $this->faker->sentence(45), 'approved' => $this->faker->boolean(), 'likes' => $this->faker->randomNumber(5) ]; }
Questo codice dice a Faker di generare quanto segue:
- Un nome
- Un indirizzo email
- Un paragrafo che contiene 45 frasi
- Un valore approvato che può essere solo vero o falso
- Un numero casuale compreso tra 0 e 9999
Collegare il modello di commento a CommentFactory
Collega il modello Comment
a CommentFactory
dichiarando una variabile $model
protetta sopra la definizione:
protected $model = Comment::class;
Inoltre, aggiungi use App\Models\Comment;
alle dipendenze dei file. Il file CommentFactory dovrebbe ora apparire così:
Come seminare il database
Seeding nella programmazione significa generare dati falsi casuali per un database a scopo di test.
Ora che hai creato il modello, eseguito le migrazioni e creato la definizione all'interno di CommentFactory, esegui il seeder utilizzando il file DatabaseSeeder .
Crea il file CommentSeeder
Crea un file seeder che utilizza factory per generare i dati:
php artisan make:seeder CommentSeeder.php
Questo codice crea un file CommentSeeder .php all'interno della cartella database/seeder .
Modifica la funzione Esegui
Connetti il modello Comment a CommentSeeder. Aggiungere il seguente codice all'interno della funzione run:
Comment::factory()->count(50)->create();
Questo codice indica a CommentSeeder di utilizzare il modello Comment e la funzione di definizione di CommentFactory per generare 50 commenti all'interno del database. Inoltre, aggiungi use App\Models\Comment;
alle dipendenze dei file. Il file CommentSeeder dovrebbe ora apparire così:
Nota: puoi configurare Faker per creare dati locali. Ad esempio, puoi impostarlo per generare nomi italiani invece di nomi casuali impostando faker_locale
all'interno del file app/config.php su it_IT
. Puoi leggere di più su Faker Locales in questa guida.
Esegui la seminatrice
Quindi, esegui il file seeder con Artisan:
php artisan db:seed --class=CommentSeeder
Questo codice esegue il file seeder e genera 50 righe di dati falsi nel database.
Il database ora dovrebbe avere 50 righe di dati falsi che puoi utilizzare per testare le funzioni della tua applicazione:
Come reimpostare il database
Quando si utilizzano i dati generati per il test, reimpostare il database ogni volta che si esegue un test. Supponiamo di voler testare la funzione di attivazione/disattivazione dei commenti approvati. Aggiorna il database dopo ogni test per garantire che i dati generati in precedenza non interferiscano con i test futuri.
Utilizzare AggiornaDatabase
Aggiorna il database utilizzando il tratto RefreshDatabase
all'interno del file di test .
Passare a ExampleTest.php all'interno della cartella tests/Feature al commento use Illuminate\Foundation\Testing\RefreshDatabase;
e aggiungi la seguente riga di codice sopra la funzione test_the_application_returns_a_successful_response
:
use RefreshDatabase;
Il file ExampleTest.php dovrebbe ora apparire così:
Esegui il test
Dopo aver aggiunto il tratto RefreshDatabase
al file di test, esegui il test utilizzando Artisan:
php artisan test
Questo codice esegue tutti i test nell'app e aggiorna il database dopo i test, come mostrato nell'immagine seguente:
Ora, controlla il database per vedere la tabella dei commenti vuota:
Riepilogo
Questo articolo ha spiegato come creare un progetto Laravel, collegarlo a un database e creare e configurare file di modelli, migrazione, factory e seeder per generare dati casuali per il database. Ha anche discusso su come reimpostare il database dopo aver eseguito i test.
Ora hai visto come Laravel Factories e Faker semplificano la generazione di qualsiasi quantità di dati di test in pochi minuti per testare un'applicazione o anche come segnaposto, con una configurazione minima.
Quando la vostra app Laravel è pronta per essere distribuita, potete farlo sui servizi di hosting delle applicazioni di Kinsta in modo rapido ed efficiente.