Comment générer et utiliser de faux enregistrements avec les usines de modèles Laravel

Publié: 2023-04-28

Les tests sont essentiels au développement Web. Les usines de modèles Laravel définissent les enregistrements de base de données de manière prévisible et facilement reproductible afin que vos tests d'application soient cohérents et contrôlés. Les fabriques de modèles définissent un ensemble d'attributs par défaut pour chacun de vos modèles Eloquent.

Par exemple, si vous créez une application de blog permettant aux auteurs et aux modérateurs d'approuver les commentaires avant leur mise en ligne, vous devez tester si la fonction fonctionne correctement avant de la déployer auprès de vos utilisateurs. Tout cela nécessite des données de test.

Pour tester l'application de blog décrite ci-dessus, vous avez besoin de données de commentaires pour imiter et tester les fonctionnalités de votre application. Laravel vous permet de le faire sans recevoir de commentaires d'utilisateurs réels en utilisant les usines Laravel et Faker pour générer de fausses données.

Cet article explique comment obtenir des données de commentaires sans commentaires d'utilisateurs réels.

Conditions préalables

Pour suivre ce didacticiel, vous devez connaître les éléments suivants :

  • XAMPP
  • Compositeur

XAMPP est une distribution Apache gratuite et facile à installer qui contient PHP, Perl et MariaDB - une base de données MySQL. Ce tutoriel utilise la dernière version, 8.1.10, qui installe PHP 8.1.10. Lisez cet article si vous installez XAMPP pour MacOS ou ce guide pour Linux. Ce tutoriel utilise XAMPP sous Windows.

Composer est un outil qui vous permet de définir, d'installer et de télécharger les packages dont dépend votre application Web en développement et en production. Ce tutoriel utilise la version v2.4.4 de Composer, qui nécessite PHP version 7.2+. Vous utilisez Composer pour installer le programme d'installation de Laravel pour ce tutoriel.

Vous pouvez également télécharger le code complet du projet à suivre.

Tester votre application ne devrait pas être une réflexion après coup. Les usines Laravel Model peuvent vous aider ! Voici comment ️ Cliquez pour tweeter

Comment configurer le projet

Dans cette section, vous allez créer un projet Laravel et le connecter à une base de données. Jetons un coup d'œil à tout ce que cela implique et comment y parvenir.

Installer le programme d'installation de Laravel

Pour créer un projet Laravel rapidement, installez le programme d'installation Laravel :

 composer global require laravel/installer

Ce code installe le programme d'installation de Laravel globalement sur votre machine.

Créer un projet Laravel

Ensuite, créez un projet Laravel en exécutant ce qui suit :

 laravel new app-name

Ce code démarre un nouveau projet Laravel et installe toutes les dépendances :

Création du projet Laravel
Création du projet Laravel

Un autre moyen plus simple d'installer Laravel consiste à utiliser directement Composer.

 composer create-project laravel/laravel app-name

Vous n'avez pas besoin d'installer le programme d'installation de Laravel lorsque vous utilisez la méthode ci-dessus.

Démarrer l'application

Vous pouvez maintenant modifier le répertoire en app-name et démarrer le projet à l'aide de l'outil d'interface de ligne de commande (CLI) de Laravel, Artisan :

 php artisan serve

Ce code démarre le projet et le connecte à localhost:8000 ou à tout autre port disponible si le port 8000 est utilisé. Sur localhost:8000, vous devriez voir quelque chose comme ceci :

La page d'accueil du site Laravel
Laravel

Créer une base de données

Pour connecter votre application à une base de données, vous devez créer une nouvelle base de données à l'aide de l'interface utilisateur graphique PHPMyAdmin de XAMPP. Accédez à localhost/phpmyadmin et cliquez sur Nouveau dans la barre latérale :

Le formulaire Créer une base de données dans PHPMyAdmin
Créer un formulaire de base de données

L'image ci-dessus montre le formulaire Créer une base de données avec app_name comme nom de base de données.

Cliquez sur Créer pour créer une base de données.

Modifier le fichier .env

Pour connecter votre application à une base de données, vous devez modifier la partie DB du fichier .env :

 DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=app_name DB_USERNAME=root DB_PASSWORD=

Ce code remplit les informations d'identification de la base de données avec votre nom de base de données, votre nom d'utilisateur, votre port, votre mot de passe et votre hôte. Vous êtes maintenant prêt à commencer à créer des usines et des modèles.

Remarque : Remplacez les valeurs par les informations d'identification de votre base de données. De plus, si vous rencontrez l'erreur "Accès refusé pour l'utilisateur", placez les valeurs de DB_USERNAME et DB_PASSWORD entre guillemets.

Comment générer de fausses données

Après avoir créé l'application et l'avoir connectée à la base de données, vous pouvez maintenant créer les fichiers nécessaires pour générer de fausses données dans la base de données.

Créer le modèle de commentaire

Créez le fichier de modèle pour interagir avec les tables de la base de données. Pour créer un modèle, utilisez Artisan :

 php artisan make:model Comment

Ce code crée un fichier Comment.php dans le dossier app/M odels avec du code passe-partout. Ajoutez le code suivant sous use HasFactory; doubler:

 protected $fillable = [ 'name', 'email', 'body', 'approved', 'likes' ];

Ce code répertorie les champs que vous souhaitez autoriser les affectations en masse car Laravel protège votre base de données des affectations en masse par défaut. Le fichier de modèle de commentaire devrait maintenant ressembler à ceci :

Le fichier de modèle Commentaire
Fichier de modèle de commentaire

Créer le fichier de migration

Après avoir créé le fichier de modèle et déclaré le tableau $fillable , vous devez créer le fichier de migration à l'aide de la commande ci-dessous :

 php artisan make:migration create_comments_table

Remarque : La convention de dénomination pour la création de migrations dans Laravel est généralement snake_case , également connue sous le nom de underscore_case . Le premier mot est l'action, le deuxième mot est un pluriel du modèle et le dernier mot est la fonctionnalité qui est créée dans le projet. Cela signifie que vous écrirez create_books_table lors de la création d'une migration pour un modèle Book.

Ce code crée un fichier nommé yyyy_mm_dd_hhmmss_create_comments_table dans le dossier database/migrations .

Ensuite, modifiez la fonction up dans 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(); }); }

Ce code crée un schéma qui crée une table avec les colonnes : id , name , email , body , approved , likes et timestamps .

Exécutez les migrations

La création et la modification du fichier de migrations ne feront rien tant que vous ne les exécuterez pas à l'aide de la ligne de commande. Si vous regardez le gestionnaire de base de données, il est toujours vide.

Exécutez les migrations à l'aide d'Artisan :

 php artisan migrate

Cette commande exécute toutes les migrations dans database/migrations car il s'agit de la première migration depuis la création de l'application :

Migrations réussies
Migrations réussies

L'image suivante montre tous les fichiers de migration que vous avez exécutés. Chacun représente une table dans la base de données :

La base de données après les migrations
Base de données après les migrations

Créer le fichier CommentFactory

Créez un fichier d'usine contenant votre fonction de définition. Pour cette démonstration, vous allez créer une usine à l'aide d'Artisan :

 php artisan make:factory CommentFactory.php

Ce code crée un fichier CommentFactory .php dans le dossier database/factories .

La fonction de définition

La fonction à l'intérieur de CommentFactory définit comment Faker génère de fausses données. Modifiez-le pour qu'il ressemble à ceci :

 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) ]; }

Ce code indique à Faker de générer ce qui suit :

  • Un nom
  • Une adresse e-mail
  • Un paragraphe qui contient 45 phrases
  • Une valeur approuvée qui ne peut être que vraie ou fausse
  • Un nombre aléatoire entre 0 et 9999

Connectez le modèle de commentaire à CommentFactory

Liez le modèle Comment à CommentFactory en déclarant une variable $model protégée au-dessus de la définition :

 protected $model = Comment::class;

Ajoutez également la use App\Models\Comment; aux dépendances de fichiers. Le fichier CommentFactory devrait maintenant ressembler à ceci :

Le fichier CommentFactory
Le fichier CommentFactory

Comment amorcer la base de données

L'ensemencement dans la programmation signifie générer de fausses données aléatoires pour une base de données à des fins de test.

Maintenant que vous avez créé le modèle, exécuté les migrations et créé la définition dans CommentFactory, exécutez le seeder à l'aide du fichier DatabaseSeeder .

Créer le fichier CommentSeeder

Créez un fichier seeder qui utilise factory pour générer les données :

 php artisan make:seeder CommentSeeder.php

Ce code crée un fichier CommentSeeder .php dans le dossier database/seeders .

Modifier la fonction d'exécution

Connectez le modèle de commentaire au CommentSeeder. Ajoutez le code suivant dans la fonction run :

 Comment::factory()->count(50)->create();

Ce code indique au CommentSeeder d'utiliser le modèle de commentaire et la fonction de définition de CommentFactory pour générer 50 commentaires dans la base de données. Ajoutez également la use App\Models\Comment; aux dépendances de fichiers. Le fichier CommentSeeder devrait maintenant ressembler à ceci :

Le fichier CommentSeeder
Fichier CommentSeeder

Remarque : Vous pouvez configurer Faker pour créer des données locales. Par exemple, vous pouvez le configurer pour générer des noms italiens au lieu de noms aléatoires en définissant faker_locale dans le fichier app/config.php sur it_IT . Vous pouvez en savoir plus sur Faker Locales dans ce guide.

Exécutez le semoir

Ensuite, exécutez le fichier seeder avec Artisan :

 php artisan db:seed --class=CommentSeeder

Ce code exécute le fichier seeder et génère 50 lignes de fausses données dans la base de données.

Amorçage de la base de données réussi
Amorçage de la base de données réussi

La base de données devrait maintenant contenir 50 lignes de fausses données que vous pouvez utiliser pour tester les fonctions de votre application :

50 lignes de données dans la base de données
50 lignes de données dans la base de données

Comment réinitialiser la base de données

Lorsque vous utilisez les données générées pour les tests, réinitialisez la base de données chaque fois que vous exécutez un test. Supposons que vous souhaitiez tester la fonctionnalité de basculement des commentaires approuvée. Actualisez la base de données après chaque test pour vous assurer que les données précédemment générées n'interféreront pas avec les tests futurs.

Utiliser RefreshDatabase

Actualisez la base de données à l'aide du trait RefreshDatabase dans le fichier de test .

Accédez à ExampleTest.php dans le dossier tests/Feature jusqu'au commentaire use Illuminate\Foundation\Testing\RefreshDatabase; et ajoutez la ligne de code suivante au-dessus de la fonction test_the_application_returns_a_successful_response :

 use RefreshDatabase;

Le fichier ExampleTest.php devrait maintenant ressembler à ceci :

Le fichier ExampleTest
Exemple de fichier de test

Exécutez le test

Après avoir ajouté le trait RefreshDatabase au fichier de test, exécutez le test à l'aide d'Artisan :

 php artisan test

Ce code exécute tous les tests dans l'application et actualise la base de données après les tests, comme illustré dans l'image ci-dessous :

Un test artisanal réussi
Un test artisanal réussi

Maintenant, vérifiez la base de données pour voir la table de commentaires vide :

Une base de données de commentaires vide
Base de données de commentaires vide
La saisie manuelle des données appartient au passé ! Automatisez les tests de votre application avec Laravel Model Factories. Commencez ici! Cliquez pour tweeter

Résumé

Cet article a expliqué comment créer un projet Laravel, le connecter à une base de données et créer et configurer des modèles, des fichiers de migration, d'usine et de seeder pour générer des données aléatoires pour la base de données. Il a également expliqué comment réinitialiser la base de données après avoir exécuté des tests.

Vous avez maintenant vu comment Laravel Factories et Faker facilitent la génération de n'importe quelle quantité de données de test en quelques minutes pour tester une application ou même comme espace réservé - avec une configuration minimale.

Lorsque votre application Laravel est prête à être déployée, vous pouvez le faire sur les services d'hébergement d'applications de Kinsta rapidement et efficacement.