Bonjour Artisan,
Les tests font partie du développement logiciel. Cela garantit que votre application fonctionne comme prévu. Laravel offre un bon support pour les tests et il a été conçu en pensant aux tests. Il fournit Pest et PHPUnit pour les tests.
Une fois que vous avez installé une application Laravel, vous pouvez voir phpunit.xml déjà disponible dans votre application. Par défaut, l'application contient deux répertoires distincts dans le répertoire de test, l'un pour les fonctionnalités et l'autre pour l'unité. L'unité est une partie plus petite et isolée de votre application tandis que la fonctionnalité est utilisée pour tester une plus grande partie de vos applications.
Dans cet article de blog, nous explorerons comment écrire des tests à l'aide de PHPUnit et comment les intégrer à votre application Laravel.
Pourquoi les tests unitaires sont importants ?
Avant d'entrer dans les détails, comprenons rapidement pourquoi les tests unitaires sont importants :
Qualité du code : Les tests détectent les bugs dès le début du jeu, ne risquant ainsi pas qu'ils entrent en production.
Refactoring Confidence : Les tests vous permettent de refactoriser en toute confiance car vous n'avez pas peur de casser des fonctionnalités.
Documentation : les tests agissent comme une documentation vivante pour le comportement de votre code.
Collaboration : Elles servent de filet de sécurité pour les équipes : elles ne permettent pas que de nouveaux changements perturbent les fonctionnalités existantes.
Avant de commencer à rédiger les cas de test, assurez-vous d'avoir installé l'application Laravel.
L'environnement de développement est mis en place : Créez un fichier .env.testing dans le répertoire racine de votre projet. Ce fichier est utilisé à la place du fichier .env lorsque vous exécutez des tests PHPUnit ou exécutez des commandes Artisan avec l'option --env=testing.
Vérifiez la configuration de PHPUnit : Vérifiez le fichier phpunit.xml à la racine de votre projet. Ce fichier configure _PHPUnit_ pour votre application Laravel.
Exécuter les tests par défaut : Laravel inclut quelques exemples de tests. Vous pouvez les exécuter en utilisant :
php artisan test
Cette commande exécute tous les tests du répertoire tests.
Alors commençons à écrire votre premier test unitaire
Fonction : Pour tester des parties plus importantes de votre application, impliquant souvent des requêtes HTTP.
Unité : Pour tester des classes et des méthodes individuelles.
Écrivons un test unitaire simple :
1. Créer un fichier de test
Utilisez Artisan pour générer un fichier de test :
php artisan make:test SumOfTwoNumberTest --unit
Cela créera tests/Unit/SumOfTwoNumberTest.php.
2. Écrivez un cas de test
Ouvrez le fichier de test nouvellement créé et ajoutez votre logique de test :
<?php namespace Tests\Unit; use PHPUnit\Framework\TestCase; class SumOfTwoNumberTest extends TestCase { /** * A basic unit test example. * * @return void */ public function test_addition() { $sum = 2 + 2; $this->assertEquals(4, $sum); } }
3. Exécutez le test
Exécutez votre test en utilisant :
php artisan test
Vous pouvez également utiliser la commande test Artisan pour exécuter vos tests. Cette commande fournit des rapports de test détaillés pour faciliter le processus de développement et de débogage.
php artisan make:test SumOfTwoNumberTest --unit
Vous devriez voir une sortie indiquant si le test a réussi ou échoué.
Créons un test unitaire pour une méthode de modèle Laravel. Supposons que nous ayons un modèle utilisateur avec une méthode getFullName :
1. Méthode modèle
Ajoutez la méthode à votre modèle utilisateur :
<?php namespace Tests\Unit; use PHPUnit\Framework\TestCase; class SumOfTwoNumberTest extends TestCase { /** * A basic unit test example. * * @return void */ public function test_addition() { $sum = 2 + 2; $this->assertEquals(4, $sum); } }
2. Créer le test
Générer un fichier de test :
./vendor/bin/phpunit
Modifiez le fichier de test pour tester la méthode getFullName :
php artisan test
3. Exécuter le test
Faire le test :
public function getFullName(): string { return $this->first_name .' '. $this->last_name; }
Vous devriez voir un message de réussite si la méthode fonctionne comme prévu.
Les tests de fonctionnalités dans Laravel vous permettent de tester des parties plus importantes de votre application, telles que les routes, les contrôleurs et le middleware.
Écrivons un exemple de test de fonctionnalité pour une page de connexion.
1. Générer un test de fonctionnalités
Utilisez Artisan pour créer un nouveau test de fonctionnalité :
php artisan make:test UserTest --unit
Cela créera tests/Feature/LoginTest.php.
2. Écrivez la logique du test
Ouvrez le fichier LoginTest.php et ajoutez le code ci-dessous :
<?php namespace Tests\Unit; use App\Models\User; use PHPUnit\Framework\TestCase; class UserTest extends TestCase { public function test_get_full_name() { $user = new User(); $user->first_name = 'John'; $user->last_name = 'Doe'; $this->assertEquals('John Doe', $user->getFullName()); } }
3. Exécutez le test des fonctionnalités
php artisan test
Le résultat indiquera si la page de connexion est accessible et si l'utilisateur peut se connecter avec succès.
Quelques bonnes pratiques pour écrire des tests unitaires dans Laravel
Noms descriptifs des tests : Les noms des tests doivent être très descriptifs de ce qui est testé.
Testez une chose à la fois : Chaque test ne doit tester qu'une seule fonctionnalité ou un seul comportement.
Utilisez des usines et des seeders : Utilisez les usines et les seeders modèles de Laravel pour créer des données de test.
Isoler les tests : Les tests unitaires ne doivent pas dépendre de services externes tels qu'une base de données ou une API. Utilisez des simulations et des talons si nécessaire.
Vous pouvez consulter la documentation de Laravel pour plus de détails.
Conclusion :
Les tests unitaires et de fonctionnalités dans Laravel sont des moyens puissants de maintenir la qualité du code et de garantir un comportement robuste des applications. Avec PHPUnit, écrire et exécuter des tests est un moyen simple et efficace. En intégrant des tests dans votre processus de développement, vous créerez des applications plus fiables et plus maintenables.
Bonne lecture !!
Bon codage !!
❤️ ?
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!