Testez votre appli Laravel sans stress : les bases de l'unit

Voici une proposition de méta-description qui répond aux exigences : "Créez des tests unitaires simples et efficaces pour votre application Laravel sans vous s

Mahmoud DEVO
Mahmoud DEVO
December 28, 2025 2 min read
Testez votre appli Laravel sans stress : les bases de l'unit

Introduction

Les tests d’application sont un aspect crucial du développement Laravel. Ils vous permettent de vérifier que votre application fonctionne comme prévu sans avoir à la déployer sur un serveur ou dans le navigateur de l’utilisateur. Dans cette série, nous allons explorer les aspects clés des tests d’application et vous montrer comment les utiliser pour améliorer votre code.

Les Tests Unitaires

Même si les tests unitaires sont souvent associés aux classes et méthodes spécifiques, il est possible de tester des objets liés au framework sans avoir à se soucier de l’ensemble de l’application. Par exemple, vous pouvez utiliser Package::make() pour créer un objet en mémoire sans le faire passer par la base de données.

use Illuminate\Foundation\Testing\TestCase;

class PopularityTest extends TestCase
{
    use RefreshDatabase;

    public function test_votes_matter_more_than_views()
    {
        $package1 = Package::make(['votes' => 1, 'views' => 0]);
        $package2 = Package::make(['votes' => 0, 'views' => 1]);

        $this->assertTrue($package1->popularity > $package2->popularity);
    }
}

Les Tests d’Application

Pour les tests d’application, nous allons utiliser la classe TestCase de Laravel par défaut. Cette classe étend l’abstrait Illuminate\Foundation\Testing\TestCase, qui fournit des outils pour tester votre application en entier.

use Illuminate\Foundation\Testing\TestCase;

class ExampleTest extends TestCase
{
    // Votre code ici...
}

Les Tests HTTP

Pour les tests HTTP, nous allons utiliser les méthodes suivantes :

  • $this->get($uri, $headers = [])
  • $this->post($uri, $data = [], $headers = [])
  • $this->put($uri, $data = [], $headers = [])
  • $this->patch($uri, $data = [], $headers = [])
  • $this->delete($uri, $data = [], $headers = [])

Ces méthodes vous permettent de faire des requêtes HTTP (GET, POST, PUT, PATCH, DELETE) sur vos routes et d’assertionner les réponses.

public function test_it_stores_new_packages()
{
    $response = $this->post(route('packages.store'), [
        'name' => 'The greatest package',
    ]);

    $response->assertOk();
}

Les Tests JSON

Pour les tests JSON, vous pouvez utiliser les méthodes suivantes :

  • $this->getJson($uri, $headers = [])
  • $this->postJson($uri, $data = [], $headers = [])
  • $this->putJson($uri, $data = [], $headers = [])
  • $this->patchJson($uri, $data = [], $headers = [])
  • $this->deleteJson($uri, $data = [], $headers = [])

Ces méthodes sont identiques à celles des tests HTTP, mais elles ajoutent des en-têtes spécifiques pour les requêtes JSON.

public function test_the_api_route_stores_new_packages()
{
    $response = $this->postJson(route('api.packages.store'), [
        'name' => 'The greatest package',
    ], ['X-API-Version' => '17']);

    $response->assertOk();
}

Assertions

Les assertions sont utilisées pour vérifier les résultats de vos tests. Voici quelques exemples :

  • $response->assertOk(): Vérifie que le code de statut est 200.
  • $response->assertStatus($status): Vérifie que le code de statut est égal à la valeur fournie.
  • $response->assertSee($text) et $response->assertDontSee($text): Vérifient que la réponse contient (ou n’contient pas) le texte spécifié.

Conclusion

Les tests d’application sont un outil puissant pour améliorer votre code Laravel. En utilisant les méthodes et assertions disponibles, vous pouvez tester votre application en entier sans avoir à la déployer sur un serveur ou dans le navigateur de l’utilisateur. Nous espérons que cette série a aidé à comprendre comment utiliser les tests d’application pour améliorer votre code.

Prochaines étapes

  • Explorez les autres outils de test disponibles, tels que BrowserKit et Dusk.
  • Apprenez à écrire des tests plus complexes qui simulent l’utilisation réelle de votre application.
  • Intégrez les tests dans votre processus de développement pour améliorer la qualité de votre code.
Advertisement

In-Article Ad

Dev Mode

Share this article

Mahmoud DEVO

Mahmoud DEVO

Senior Full-Stack Developer

I'm a passionate full-stack developer with 10+ years of experience building scalable web applications. I write about Vue.js, Node.js, PostgreSQL, and modern DevOps practices.

Enjoyed this article?

Subscribe to get more tech content delivered to your inbox.

Related Articles