Les tests sont essentiels au développement web. Les Laravel Model Factories définissent les enregistrements de la base de données d’une manière prévisible et facilement reproductible afin que les tests de votre application soient cohérents et contrôlés. Les usines 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 qu’ils ne soient mis en ligne, vous devrez 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 la fonctionnalité de votre application. Laravel vous permet de le faire sans obtenir les commentaires des 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 les commentaires d’utilisateurs réels.
Conditions préalables
Pour compléter ce tutoriel, vous devez être familier avec les éléments suivants :
- XAMPP
- Composer
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 sur Windows.
Composer est un outil qui vous permet de définir, d’installer et de télécharger les paquets 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 pour le suivre.
Comment configurer le projet
Dans cette section, vous allez créer un projet Laravel et le connecter à une base de données. Voyons ce que cela implique et comment y parvenir.
Installez le programme d’installation de Laravel
Pour créer rapidement un projet Laravel, installez le programme d’installation de Laravel :
composer global require laravel/installer
Ce code installe le programme d’installation de Laravel globalement sur votre machine.
Créez 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 :
Une autre façon plus simple d’installer Laravel est d’utiliser Composer directement.
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émarrez l’application
Vous pouvez maintenant changer le répertoire en app-name et démarrer le projet en utilisant 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 :
Créez une base de données
Pour connecter votre application à une base de données, vous devez créer une nouvelle base de données en utilisant l’interface graphique PHPMyAdmin de XAMPP. Allez à localhost/phpmyadmin et cliquez sur Nouveau dans la colonne latérale :
L’image ci-dessus montre le formulaire de création de 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.
Modifiez le fichier .env
Pour connecter votre application à une base de données, vous devez éditer 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 le nom de la base de données, le nom d’utilisateur, le port, le mot de passe et l’hôte. Vous êtes maintenant prêt à créer des usines et des modèles.
Remarque : remplacez les valeurs par vos identifiants de base de données. De plus, si vous rencontrez l’erreur « Accès refusé pour l’utilisateur », mettez 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éez le modèle de commentaire
Créez le fichier 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/Models avec du code de base. Ajoutez le code suivant sous la ligne use HasFactory;
:
protected $fillable = [
'name',
'email',
'body',
'approved',
'likes'
];
Ce code énumère les champs pour lesquels vous souhaitez autoriser les affectations en masse, car Laravel protège par défaut votre base de données contre les affectations en masse. Le fichier de modèle Commentaire devrait maintenant ressembler à ceci :
Créez le fichier de migration
Après avoir créé le fichier 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
Note : La convention de nommage pour la création de migrations dans Laravel est habituellement snake_case
également connue sous le nom de underscore_case
. Le premier mot est l’action, le deuxième est un pluriel du modèle, et le dernier est la fonctionnalité qui est créée à l’intérieur du projet. Cela signifie que vous écrirez create_books_table
lorsque vous créerez 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 l’édition du fichier de migration 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 c’est la première migration depuis la création de l’application :
L’image suivante montre tous les fichiers de migration que vous avez exécutés. Chacun représente une table de la base de données :
Créez le fichier CommentFactory
Créez un fichier factory contenant votre fonction de définition. Pour cette démonstration, vous créerez une fabrique à 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-la pour qu’elle 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 contenant 45 phrases
- Une valeur approuvée qui ne peut être que vraie ou fausse
- Un nombre aléatoire entre 0 et 9999
Reliez le modèle de commentaire à CommentFactory
Reliez 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 use AppModelsComment;
aux dépendances du fichier. Le fichier CommentFactory devrait maintenant ressembler à ceci :
Comment alimenter la base de données
En programmation, l’ensemencement consiste à 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éation du fichier CommentSeeder
Créez un fichier seeder qui utilise la 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.
Modifiez la fonction Run
Connectez le modèle Comment à CommentSeeder. Ajoutez le code suivant dans la fonction Run :
Comment::factory()->count(50)->create();
Ce code indique à CommentSeeder d’utiliser le modèle Comment et la fonction de définition de CommentFactory pour générer 50 commentaires dans la base de données. Ajoutez également le site use AppModelsComment;
aux dépendances du fichier. Le fichier CommentSeeder doit maintenant ressembler à ceci :
Remarque : vous pouvez configurer Faker pour qu’il crée des données locales. Par exemple, vous pouvez le configurer pour qu’il génère 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 les Locales de Faker dans ce guide.
Exécutez le seeder
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.
La base de données devrait maintenant contenir 50 lignes de données fictives que vous pouvez utiliser pour tester les fonctions de votre application :
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 fonction de basculement des commentaires approuvés. Actualisez la base de données après chaque test pour vous assurer que les données générées précédemment n’interféreront pas avec les tests futurs.
Utilisez RefreshDatabase
Rafraîchissez la base de données à l’aide du trait RefreshDatabase
dans le fichier de test.
Naviguez vers ExampleTest.php dans le dossier tests/Feature jusqu’au commentaire use IlluminateFoundationTestingRefreshDatabase;
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 :
Lancez le test
Après avoir ajouté RefreshDatabase
au fichier de test, exécutez le test à l’aide d’Artisan :
php artisan test
Ce code exécute tous les tests de l’application et rafraîchit la base de données après les tests, comme le montre l’image ci-dessous :
Maintenant, vérifiez la base de données pour voir la table des commentaires vide :
Résumé
Cet article explique 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 d’ensemencement pour générer des données aléatoires pour la base de données. Il explique également comment réinitialiser la base de données après l’exécution 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 placeholder – 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.
Laisser un commentaire