Testez vos compétences sur tous nos services d'hébergement et bénéficiez de 15% de réduction!

Utilisez le code à la caisse :

Skills
09.12.2024
No categories

Laravel Factories : Construire des données de test réalistes avec Laravel Factory Patterns

Laravel Factories sur AlexHost VPS : Tester comme un pro

Pourquoi des usines Laravel sur AlexHost ? Les usines Laravel sont votre raccourci pour générer des données de test réalistes, ce qui rend le développement et les tests de votre application un jeu d’enfant. Associé à l’hébergement VPS d’AlexHost –avec un accès root, une vitesse SSD, et une sécurité incroyable – vous avez le terrain de jeu parfait pour construire et tester des applications Laravel. Ce guide vous accompagne dans la création et l’utilisation d’usines pour produire rapidement des données de test et s’assurer que votre application est prête pour la production.

Que sont les usines dans Laravel ?

Les factories dans Laravel sont des classes qui définissent un plan de création d’instances de modèles. Elles sont particulièrement utiles pour générer de fausses données de test ou pour alimenter des bases de données avec des données originales. En utilisant les fabriques, vous pouvez créer une ou plusieurs instances de vos modèles, chacune avec des attributs uniques.

Les usines utilisent Faker, une bibliothèque PHP qui génère de fausses données telles que des noms, des adresses, des courriels, etc. pour que les données aient l’air réalistes.

Conditions préalables

  • Laravel 9 ou plus récent.
  • Connaissance de base des modèles Eloquent et de la structure de la base de données Laravel.
  • Connexion à une base de données configurée dans votre fichier .env.

Étape 1 : Créer une fabrique de modèles

Dans Laravel 8 et les versions ultérieures, les usines sont définies comme des classes. Vous pouvez créer une nouvelle fabrique en utilisant la commande artisan :

php artisan make:factory UserFactory

Cela créera un nouveau fichier factory dans le répertoire database/factories nommé UserFactory.php.

Étape 2 : Définir l’usine

Ouvrez le fichier UserFactory.php situé dans le répertoire database/factories :


'email' => $this->faker->unique()->safeEmail,
'email_verified_at' => now(),
'password' => bcrypt('password'), // or Hash::make('password')
'remember_token' => Str::random(10),
];}}

Explication

  • $model : Indique le modèle d’Eloquent pour lequel cette fabrique est utilisée.
  • definition() : Cette méthode renvoie un tableau d’attributs qui définissent le modèle. Elle utilise l’instance de Faker ($this->faker) pour générer des données aléatoires pour chaque attribut.
  • name : Utilise faker->name pour générer un nom réaliste.
  • email : utilise faker->unique()->safeEmail pour générer une adresse email unique.
  • password : Définit un mot de passe par défaut en utilisant la fonction bcrypt().
  • remember_token : Génère une chaîne aléatoire pour le champ remember_token.

Cette définition d’usine créera des informations d’identification réalistes avec une adresse électronique unique et des noms aléatoires.

Étape 3 : Utiliser les fabriques pour créer des instances de modèle

Vous pouvez utiliser la fabrique pour créer une ou plusieurs instances d’un modèle. Voici quelques exemples :

3.1. Création d’un utilisateur unique

Pour créer une instance unique d’un utilisateur dans un test ou un seeder, utilisez la méthode create :

$user = \App\Models\User::factory()->create();

Cette méthode crée un utilisateur dans la base de données avec les attributs définis dans la fabrique.

3.2. Créer plusieurs utilisateurs

Pour créer plusieurs instances d’utilisateurs :

$users = \App\Models\User::factory()->count(10)->create();

Cela crée 10 enregistrements d’utilisateurs dans la base de données.

3.3. Créer une instance sans sauvegarder (méthode Make)

Si vous souhaitez créer une instance sans la sauvegarder dans la base de données, utilisez la méthode make :

$user = \App\Models\User::factory()->make();

Cela créera un objet de modèle Utilisateur sans le sauvegarder dans la base de données.

Étape 4 : Personnaliser les états de la fabrique

Les états vous permettent de définir différentes versions de la fabrique, ce qui peut être utile pour créer des utilisateurs avec des rôles ou des statuts différents.

4.1. Définir un état

Vous pouvez définir des états dans la classe de la fabrique :

public function admin()
{
return $this->state(function (array $attributes) {
return [
'is_admin' => true,
];
});
}

Cet état admin peut être utilisé pour créer des utilisateurs dont l’attribut is_admin est fixé à true.

4.2. Utilisation de l’état

Pour utiliser l’état administrateur lors de la création d’utilisateurs :

$adminUser = \App\Models\User::factory()->admin()->create();

Cela créera un utilisateur avec l’attribut is_admin fixé à true.

Étape 5 : Utilisation des usines dans les tests

Les fabriques sont particulièrement utiles lors de l’écriture de tests. Elles vous permettent de créer rapidement des données de test et de vous concentrer sur la logique que vous testez.

5.1. Créer des données de test dans un cas de test

Voici un exemple d’utilisation d’une fabrique dans un test :

public function test_users_can_be_created()
{
$user = \App\Models\User::factory()->create();$this->assertDatabaseHas('users', [
'email' => $user->email,
]);
}

Ce test crée un utilisateur et vérifie ensuite s’il existe dans la table des utilisateurs avec l’adresse électronique spécifiée.

Etape 6 : Remplir la base de données avec des usines

Les usines peuvent également être utilisées dans les semoirs de base de données pour alimenter les tables de données d’exemple.

6.1. Création d’un seeder

Créez un seeder à l’aide de la commande artisan :

php artisan make:seeder UserSeeder

Ouvrez le fichier UserSeeder.php dans database/seeders et utilisez la fabrique pour générer des utilisateurs :


}
}

Ce seeder créera 50 utilisateurs en utilisant la fabrique d’utilisateurs.

6.2. Démarrer le Seeder

Démarrez le semoir en utilisant :

php artisan db:seed --class=UserSeeder

Cette commande remplit la table des utilisateurs avec 50 enregistrements d’utilisateurs aléatoires.

Étape 7 : Utilisation des connexions dans les usines

Si vous avez des modèles avec des liens, tels que User et Post, vous pouvez créer des usines qui créent des données liées :

7.1. Définir les connexions

Dans PostFactory.php :

public function definition()
{
return [
'user_id' => \App\Models\User::factory(),
'title' => $this->faker->sentence,
'body' => $this->faker->paragraph,
];
}

Cette définition garantit que lorsqu’un message est créé, un utilisateur est automatiquement généré à l’aide de la fabrique d’utilisateurs.

7.2. Création d’un message avec un utilisateur associé

$post = \App\Models\Post::factory()->create();

Cette commande permet de créer un message avec un utilisateur associé.

Conclusion : Usines AlexHost = Nirvana du test

Les usines Laravel font des données de test un jeu d’enfant, et le VPS d’AlexHost donne à votre application Laravel la vitesse et le contrôle nécessaires pour briller. De l’utilisateur unique aux relations complexes, les usines rationalisent les tests et l’ensemencement. Déployez sur votre VPS, exécutez php artisan db:seed, et regardez votre application prendre vie. Besoin d’un coup de main ? AlexHost vous aide à coder, tester, conquérir !

Testez vos compétences sur tous nos services d'hébergement et bénéficiez de 15% de réduction!

Utilisez le code à la caisse :

Skills

Похожие записи не найдены.