Pest pour PHP : guide complet avec exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Qu'est-ce que Pest et pourquoi l'utiliser ?

Pest est un framework de test moderne et élégant pour PHP, créé par Nuno Maduro en 2021. Contrairement aux solutions traditionnelles comme PHPUnit, Pest propose une syntaxe plus concise et expressive, inspirée de Jest (JavaScript) et RSpec (Ruby). Si PHPUnit est un "couteau suisse" pour les tests, Pest est un "scalpel" qui permet d'écrire des tests plus rapidement, plus proprement et avec moins de code passe-partout.

L'objectif principal de Pest est de rendre l'écriture de tests aussi agréable et intuitive que possible. Au lieu de classes et de méthodes aux noms longs, vous utilisez des fermetures (closures) et des chaînages d'appels (fluent interface). C'est particulièrement utile pour les projets où la vitesse de développement et la lisibilité du code sont cruciales, comme les startups, les services API ou le travail en équipe où les tests sont écrits non seulement par les ingénieurs QA mais aussi par les développeurs.

Avantages clés de Pest par rapport à PHPUnit :

  • Concision : Moins de code pour écrire le même test.
  • Lisibilité : Les tests ressemblent à du langage naturel (exemple : expect($result)->toBeTrue()).
  • Fonctions intégrées : beforeEach(), afterEach(), todo() et bien d'autres.
  • Architecture : Pas d'héritage obligatoire de TestCase.
  • Écosystème : Plugins pour Laravel, Livewire, Mockery et d'autres outils populaires.

Installation de Pest

Pest s'installe via Composer, le gestionnaire de paquets standard pour PHP. Assurez-vous d'avoir PHP version 8.0 ou supérieure.

Créez un nouveau projet ou placez-vous dans le répertoire racine d'un projet existant :

mkdir mon-projet-pest
cd mon-projet-pest
composer init --yes

Installez Pest comme dépendance de développement (dev) :

composer require pestphp/pest --dev

Après l'installation, initialisez Pest dans votre projet :

./vendor/bin/pest --init

Cette commande crée la structure de base :

  • tests/ — le répertoire pour les tests.
  • tests/Pest.php — le fichier de configuration globale (exemple : uses()).
  • phpunit.xml — le fichier de configuration (Pest fonctionne au-dessus de PHPUnit).

Vous pouvez maintenant lancer les tests :

./vendor/bin/pest

Si vous utilisez Laravel, installez le paquet supplémentaire pour une meilleure intégration :

composer require pestphp/pest-plugin-laravel --dev

Démarrage rapide avec un exemple de code

Créez un fichier tests/ExampleTest.php :

<?php

test('assertion de base', function () {
    $resultat = 1 + 1;
    expect($resultat)->toBe(2);
});

Lancez les tests :

./vendor/bin/pest

Vous verrez un affichage vert avec le message PASS Tests\ExampleTest. Remarquez que nous n'avons utilisé ni classes, ni méthodes avec annotations, ni héritage. Juste une fonction test() et une fermeture. C'est ça, le "test moderne".

Syntaxe alternative avec le mot-clé it (plus lisible pour décrire le comportement) :

it('effectue une addition simple', function () {
    $somme = 2 + 3;
    expect($somme)->toEqual(5);
});

Méthodes et fonctions essentielles de Pest

Voici 10 méthodes et fonctions clés de Pest avec des descriptions détaillées et des exemples.

1. test() — définition d'un test

Ce qu'elle fait : Crée un nouveau test. C'est la fonction principale pour définir un scénario de test.

Paramètres :

  • string $description — la description du test (affichée dans la console).
  • callable $closure — la fermeture contenant la logique du test.

Recommendations