Laravel
Laravel • Module Test • Chapitre 1

Introduction aux Tests dans Laravel

Laravel intègre dès l'installation une infrastructure de test de classe mondiale. Avec l'adoption massive de Pest PHP (surcouche élégante et concise à PHPUnit) et la commande native php artisan test, tester vos applications web et vos API devient une expérience fluide, productive et agréable.

🚀
Pest PHP Moderne

Syntaxe expressive et minimaliste inspirée de Vitest/Jest, réduisant le boilerplate de 70% par rapport à PHPUnit.

📁
Unit vs Feature

Distinction claire : tests/Unit pour la logique pure et tests/Feature pour les flux HTTP complets avec BDD.

⚙️
Environnement Dédié

Fichier phpunit.xml configuré pour utiliser SQLite en mémoire (:memory:) pour une vitesse d'exécution foudroyante.

⚡
Artisan Test Runner

Support natif de la parallélisation multicœur avec php artisan test --parallel et profilage des tests lents.

Studio Interactif : Comparateur Pest PHP vs PHPUnit Classique

Basculez entre les deux syntaxes pour comparer la concision et la lisibilité du code de test en Laravel.

Test de la page d'accueil Laravel :
Syntaxe Pest (Fonctionnelle)
it('returns a successful response', function () {
    $response = $this->get('/');

    $response->assertStatus(200);
});

Pest PHP élimine la classe englobante, la méthode verbeuse et le $this-> pour aller droit au but avec it() et test().

$ php artisan test
PASS Tests\Feature\ExampleTest
✓ it returns a successful response 0.08s
Tests: 1 passed (2 assertions)
Duration: 0.12s
1. Configuration BDD en Mémoire (phpunit.xml)

Utilisez SQLite en mémoire pour exécuter des centaines de tests en quelques secondes sans base de données locale lourde.

<php>
    <env name="APP_ENV" value="testing"/>
    <env name="BCRYPT_ROUNDS" value="4"/>
    <env name="CACHE_STORE" value="array"/>
    <env name="DB_CONNECTION" value="sqlite"/>
    <env name="DB_DATABASE" value=":memory:"/>
    <env name="MAIL_MAILER" value="array"/>
    <env name="QUEUE_CONNECTION" value="sync"/>
    <env name="SESSION_DRIVER" value="array"/>
</php>
2. Commandes Essentielles du Terminal Artisan

Options puissantes pour cibler, déboguer et accélérer vos tests au quotidien.

# Lancer tous les tests en parallèle sur tous les cœurs CPU
php artisan test --parallel

# Exécuter uniquement un fichier de test spécifique
php artisan test tests/Feature/AuthTest.php

# Filtrer par nom de méthode ou description de test
php artisan test --filter=login

# S'arrêter dès la première erreur rencontrée (Fast Fail)
php artisan test --bail

# Afficher les 10 tests les plus lents à optimiser
php artisan test --profile