I test sono essenziali per lo sviluppo web. Le model factory di Laravel definiscono i record del database in modo prevedibile e facilmente replicabile, in modo che i test delle vostre applicazioni siano coerenti e controllati. Le model factory definiscono un insieme di attributi predefiniti per ciascuno dei vostri modelli Eloquent.
Per esempio, se state realizzando un’applicazione di blogging che consente agli autori e ai moderatori di approvare i commenti prima che vengano pubblicati, dovete verificare che la funzione sia impostata correttamente prima di distribuirla ai vostri utenti. Tutto questo richiede dati di prova.
Per testare l’applicazione di blogging descritta sopra, avete bisogno dei dati dei commenti per imitare e testare le funzionalità della vostra applicazione. Laravel vi permette di farlo senza ottenere commenti dagli utenti reali, usando le factory di Laravel e Faker per generare dati falsi.
Questo articolo vi spiega come ottenere i dati dei commenti quando non avete commenti da utenti reali.
Prerequisiti
Per completare questo tutorial, dovete conoscere quanto segue:
- XAMPP
- Composer
XAMPP è una distribuzione Apache gratuita e facile da installare che contiene PHP, Perl e MariaDB, un database MySQL. Questo tutorial utilizza l’ultima versione, la 8.1.10, che installa PHP 8.1.10. Leggete questo articolo se volete installare XAMPP per MacOS o questa guida se usate Linux. In questo tutorial usiamo XAMPP su Windows.
Composer è uno strumento che vi permette di definire, installare e scaricare i pacchetti da cui dipende la vostra applicazione web in fase di sviluppo e produzione. In questo tutorial usiamo la versione v2.4.4 di Composer , che richiede la versione 7.2+ di PHP. Useremo Composer per installare il programma di installazione di Laravel.
Potete anche scaricare il codice completo del progetto per seguirlo.
Come impostare il progetto
In questa sezione creeremo un progetto Laravel e lo collegheremo a un database. Vediamo tutto ciò che comporta e come realizzarlo.
Installare il programma di installazione di Laravel
Per creare rapidamente un progetto Laravel, installate il programma di installazione di Laravel:
composer global require laravel/installer
Questo codice installa il programma di installazione di Laravel a livello globale sul computer.
Creare un progetto Laravel
Quindi create un progetto Laravel eseguendo questo codice:
laravel new app-name
Questo codice avvia un nuovo progetto Laravel e installa tutte le dipendenze:
Un altro modo più semplice per installare Laravel è quello di utilizzare direttamente Composer.
composer create-project laravel/laravel app-name
Non è necessario installare il programma di installazione di Laravel quando si usa il metodo sopra descritto.
Avviare l’app
Ora potete cambiare la directory in app-name e avviare il progetto utilizzando lo strumento dell’interfaccia a riga di comando (CLI) di Laravel, Artisan:
php artisan serve
Questo codice avvia il progetto e lo connette a localhost:8000 o a qualsiasi altra porta disponibile se la porta 8000 è in uso. Su localhost:8000, dovreste vedere qualcosa di simile a questo:
Creare un database
Per collegare la vostra applicazione a un database, dovete creare un nuovo database utilizzando l’interfaccia grafica PHPMyAdmin di XAMPP. Andate su localhost/phpmyadmin e fate clic su New nella barra laterale:
L’immagine qui sopra mostra il modulo Create database con app_name come nome del database.
Fate clic su Create per creare un database.
Modifica del file .env
Per collegare la vostra applicazione a un database, dovete 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 inserisce le credenziali del database con il nome del database, il nome utente, la porta, la password e l’host. Ora avete tutto pronto per iniziare a creare factory e modelli.
Nota: Sostituite i valori con le credenziali del vostro database. Inoltre, se si verifica l’errore “Access denied for user”, inserite i valori di DB_USERNAME
e DB_PASSWORD
tra virgolette doppie.
Come generare dati falsi
Dopo aver creato l’applicazione e averla collegata al database, potete creare i file necessari per generare dati falsi nel database.
Creare il modello Comment
Create il file del modello per interagire con le tabelle del database. Per creare un modello, usate Artisan:
php artisan make:model Comment
Questo codice crea un file Comment.php all’interno della cartella app/Models con del codice di base. Aggiungete il seguente codice sotto la riga use HasFactory;
:
protected $fillable = [
'name',
'email',
'body',
'approved',
'likes'
];
Questo codice elenca i campi che volete permettere di assegnare in massa perché Laravel protegge il vostro database dalle assegnazioni in massa per impostazione predefinita. Il file del modello Comment dovrebbe ora avere questo aspetto:
Creare il file di migrazione
Dopo aver creato il file del modello e aver dichiarato l’array $fillable
, dovete creare il file di migrazione usando il comando seguente:
php artisan make:migration create_comments_table
Nota: La convenzione di denominazione per la creazione di migrazioni in Laravel è solitamente snake_case
, noto anche come underscore_case
. La prima parola è l’azione, la seconda è un plurale del modello e l’ultima è la funzione che viene creata all’interno del progetto. Ciò significa che scriverete create_books_table
quando create una migrazione per un modello Book (libro).
Questo codice crea un file chiamato yyyy_mm_dd_hhmmss_create_comments_table all’interno della cartella database/migrations.
Successivamente, modificate 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, a sua volta, 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 serviranno a nulla finché non le eseguirete tramite la riga di comando. Se osservate il database manager, è ancora vuoto.
Eseguite le migrazioni con Artisan:
php artisan migrate
Questo comando esegue tutte le migrazioni all’interno di database/migrations perché è la prima migrazione dalla creazione dell’applicazione:
L’immagine seguente mostra tutti i file di migrazione eseguiti. Ognuno di essi rappresenta una tabella del database:
Creare il file CommentFactory
Create un file factory che contenga la vostra funzione di definizione. Per questa dimostrazione, creerete un factory utilizzando 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 il modo in cui Faker genera i dati falsi. Modificatela in modo che assomigli a questa:
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 contenente 45 frasi
- Un valore approvato che può essere solo vero o falso
- Un numero casuale compreso tra 0 e 9999
Collegare il modello Comment alla CommentFactory
Collegate il modello Comment
a CommentFactory
dichiarando una variabile protetta $model
sopra la definizione:
protected $model = Comment::class;
Inoltre, aggiungete use AppModelsComment;
alle dipendenze del file. Il file CommentFactory dovrebbe ora avere questo aspetto:
Come fare il seeding del database
In programmazione, il termine “seeding” indica la generazione di dati falsi casuali per un database a scopo di test.
Ora che avete creato il modello, eseguito le migrazioni e creato la definizione all’interno di CommentFactory, eseguite il seeder utilizzando il file DatabaseSeeder.
Creare il file CommentSeeder
Create un file seeder che usi la factory per generare i dati:
php artisan make:seeder CommentSeeder.php
Questo codice crea un file CommentSeeder.php all’interno della cartella database/seeders.
Modificare la funzione Run
Collegate il modello Comment al CommentSeeder. Aggiungete il seguente codice all’interno della funzione run:
Comment::factory()->count(50)->create();
Questo codice indica al CommentSeeder di utilizzare il modello Comment e la funzione di definizione di CommentFactory per generare 50 commenti all’interno del database. Inoltre, aggiungete il sito use AppModelsComment;
alle dipendenze del file. Il file CommentSeeder dovrebbe ora avere il seguente aspetto:
Nota: Potete configurare Faker per creare dati locali. Ad esempio, potete impostare la generazione di nomi italiani invece di nomi casuali impostando faker_locale
nel file app/config.php su it_IT
. Trovate ulteriori informazioni su Faker Locales in questa guida.
Eseguire il seeder
Successivamente, eseguite 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 dovrebbe ora contenere 50 righe di dati falsi che potrete usare per testare le funzioni della vostra applicazione:
Come resettare il database
Quando usate i dati generati per i test, reimpostate il database ogni volta che eseguite un test. Supponiamo che vogliate testare la funzione di selezione dei commenti approvati. Aggiornate il database dopo ogni test per assicurarvi che i dati generati in precedenza non interferiscano con i test futuri.
Usare RefreshDatabase
Aggiornate il database utilizzando il tratto RefreshDatabase
all’interno del file di test.
Andate su ExampleTest.php all’interno della cartella tests/Feature fino al commento use IlluminateFoundationTestingRefreshDatabase;
e aggiungete la seguente riga di codice sopra la funzione test_the_application_returns_a_successful_response
:
use RefreshDatabase;
Il file ExampleTest.php dovrebbe ora avere il seguente aspetto:
Eseguire il test
Dopo aver aggiunto il tratto RefreshDatabase
al file di test, eseguite il test con Artisan:
php artisan test
Questo codice esegue tutti i test dell’applicazione e aggiorna il database dopo i test, come mostrato nell’immagine sottostante:
Ora controllate il database per vedere la tabella dei commenti vuota:
Riepilogo
In questo articolo abbiamo visto come creare un progetto Laravel, collegarlo a un database e creare e configurare i modelli, le migrazioni, i factory e i file seeder per generare dati casuali per il database. Inoltre, abbiamo parlato di come resettare il database dopo aver eseguito i test.
Ora sapete in che modo Laravel Factories e Faker facilitano la generazione di qualsiasi quantità di dati di prova in pochi minuti per testare un’applicazione o anche solo come placeholder, con una configurazione minima.
Quando la vostra applicazione Laravel è pronta per essere distribuita, potete farlo con i servizi di Hosting di Applicazioni di Kinsta in modo rapido ed efficiente.
Lascia un commento