Tester c'est simple comme composer test

Par nbergeron, 15 mars, 2025
La suite de test s'appelle Pest et pest veut dire de la vermine comme un rat peut être considéré comme ça.

Utiliser le coeur de Composer pour les tests unitaires

Lors du dernier blogue, le fichier composer.json a été présenté. Il est central à l'utilisation de Composer compte tenu qu'il spécifie les librairies qui sont utilisées, leur version, d'où elles sont obtenues et d'autres informations de configuration.

Maintenant, nous allons voir comment utiliser ce fichier afin de mettre en place des tests unitaires.

Tests unitaires

Premièrement, vous devez installer une librairie de tests. Il y en a plusieurs.

En voici quelques-unes :

Nous choisirons PHPUnit car elle est manifestement la plus populaire dans le contexte de PHP et a une documentation complète. Cependant, nous tenterons d'utiliser Pest aussi. Je m'explique : Pest est une surcouche par-dessus PHPUnit qui permet de faire la même chose mais en language qui se rapproche du language naturel.

Voici l'exemple d'un test avec PHPUnit :

class SumTest extends TestCase
{
    public function testSum()
    {
        $result = sum(1, 2);
        $this->assertEquals(3, $result);
    }
}

Voici son équivalent écrit avec Pest tiré du site de la librairie :

test('sum', function () {
   $result = sum(1, 2);
 
   expect($result)->toBe(3);
});

Nous pouvons donc voir assez rapidement ce qui se passe compte tenu que le test est écrit dans un language qui est près de celui naturel. Et l'avantage c'est que Pest utilise PHPUnit et permet même d'utiliser PHPUnit à travers Pest. Donc, pour utiliser Pest, nous devons d'abord installer les librairies nécessaires.

Installer les librairies

Selon le guide d'installation de Pest, nous devons executer ces commandes :

composer remove phpunit/phpunit
composer require pestphp/pest --dev --with-all-dependencies

Vous pouvez aussi passer par Composer.json, bien que les commandes précédentes arrivent probablement à un meilleur résultat vu qu'elles assurent d'installer les dépendances nécessaires à Pest :

{
    "require-dev": {
        "pestphp/pest": "^2.0",
        "phpunit/phpunit": "^9.5"
    },
    "scripts": {
        "test": "pest"
    }
}

L'utilisation de require-dev est surtout utile si vous n'utiliserez pas les librairies dans un environnement de production et vous ne souhaitez qu'expérimenter avec la librairie. Si vous souhaitez utiliser Pest en production, alors remplacez require-dev par require .

Ensuite, vous devez faire la commande composer install pour installer si vous avez utilisé la méthode utilisant composer.json et  ./vendor/bin/pest --version pour vérifier que l'installation s'est bien déroulée.

Initialiser Pest

La commande ./vendor/bin/pest --init va créer un fichier de configuration nommé Pest.php à la racine de la suite de tests nécessaire pour l'exécution des tests.

Comprendre l'architecture

Voici l'architecture typique du dossier de tests.

├── 📂 tests
│   ├── 📂 Unit
│   │   └── ExampleTest.php
│   └── 📂 Feature
│   │   └── ExampleTest.php
│   └── TestCase.php
│   └── Pest.php
├── phpunit.xml

Détails à remarquer :

  • Il y a un dossier pour les tests unitaires et un autre pour les tests de fonctionnalités.
  • Pest.php est un fichier où vous configurez les paramètres de pest.
  • TestCase.php est là pour définir des paramètres ou des fonctionnalités qui seront utilisés dans tout vos tests.
  • phpUnit.xml permet de configurer phpUnit. Pest donner accès à tous les fonctionnalités de PHPUnit.
  • Remarquez le nom des tests dans le dossier Unit et Feature. Les deux ont en commun de se terminer par Test.php . Il s'agit d'une convention à suivre.

Lancer des tests

Enfin, utilisez la commande ./vendor/bin/pest pour lancer des tests. Lancer cette commande devrait afficher le résultat de l'exécution de plusieurs tests. À vous maintenant d'en rajouter.

Vous pouvez aussi vous simplifier la vie grâce à composer.json en créant un alias afin de lancer un test grâce à la commande  composer test .

Bref, ce blogue a été un aperçu rapide des tests utilisant la librairie Pest. Le prochain ira plus en détails sur les tests avec Pest.

Bibliographie

Étiquettes

Commentaires1

gmousseaulangevin

il y a 5 jours 13 heures

Super ton article ! C’est clair et concis. Étant moins familier avec PHP, je suis heureux qu'un outil de gestion des dépendances comme composer existe pour me faciliter un peu la vie quand j’ai à utiliser ce language pour un projet.