0Pricing
PHP Academy · Leçon

Simuler des dépendances avec PHPUnit

Créer des objets simulés pour isoler les unités et contrôler le comportement des collaborateurs.

Simuler des dépendances avec PHPUnit est une leçon PHP Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage PHP Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours PHP Academy comprend 4 leçons au total.

Pourquoi utiliser des objets simulés ?

La simulation remplace une dépendance réelle (base de données, service de messagerie, client HTTP) par un objet factice contrôlable afin que les tests soient rapides, isolés et déterministes.

createMock()

createMock(ClassName::class) crée un objet simulé qui implémente toutes les méthodes de la classe et renvoie null par défaut.

<?php
$mailer = $this->createMock(Mailer::class);
// All methods return null by default

Vérifier les appels de méthodes

Utilisez expects() avec des comparateurs comme once(), exactly(3), never() et any() pour vérifier que les méthodes sont appelées le bon nombre de fois.

<?php
$mailer->expects($this->once())
       ->method("send")
       ->with("user@example.com", "Welcome!");

Simuler des valeurs de retour

Utilisez willReturn() pour faire renvoyer une valeur donnée à une méthode simulée.

<?php
$repo = $this->createMock(UserRepository::class);
$repo->method("find")
     ->willReturn(new User(id: 1, name: "Alice"));

willReturnMap()

Renvoyez des valeurs différentes selon l’argument avec willReturnMap().

<?php
$cache->method("get")
      ->willReturnMap([
          ["key:1", "value-one"],
          ["key:2", "value-two"],
      ]);

willThrowException()

Faites lever une exception à un objet simulé afin de tester les chemins de gestion des erreurs.

<?php
$repo->method("find")
     ->willThrowException(new DatabaseException("Connection lost"));

Comparateurs d’arguments

Utilisez des comparateurs d’arguments dans with() pour des assertions flexibles : $this->anything(), $this->equalTo() et $this->isInstanceOf().

<?php
$logger->expects($this->once())
       ->method("log")
       ->with($this->stringContains("error"));

Objets simulés partiels (getMockBuilder)

Utilisez getMockBuilder() avec onlyMethods() pour simuler certaines méthodes tout en conservant les implémentations réelles des autres.

<?php
$svc = $this->getMockBuilder(EmailService::class)
            ->onlyMethods(["sendRaw"])
            ->getMock();
$svc->method("sendRaw")->willReturn(true);

Modèle de l’espion

Un espion enregistre tous les appels afin que vous puissiez les vérifier après l’exécution — les objets simulés de PHPUnit peuvent jouer le rôle d’espions en utilisant any() et en capturant les arguments.

Injecter des objets simulés

Transmettez les objets simulés à la classe testée par injection dans le constructeur — il s’agit du modèle standard pour obtenir un code testable et faiblement couplé.

<?php
$service = new NotificationService($mailer, $logger);
$service->notify($user);

Objets simulés d’interfaces ou de classes concrètes

La simulation des interfaces est préférable : aucun détail d’implémentation ne se retrouve dans le test, qui reste valide même si l’implémentation réelle est modifiée.

Résumé

Utilisez createMock() pour isoler les dépendances. Utilisez expects()->method()->with()->willReturn() pour définir les attentes et les valeurs simulées. Injectez les objets simulés par le constructeur.

Vérification rapide

Quelle méthode fait renvoyer une valeur donnée à un objet simulé ?

Questions Fréquemment Posées

La leçon « Simuler des dépendances avec PHPUnit » est-elle gratuite ?

Oui — le texte complet de « Simuler des dépendances avec PHPUnit » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours PHP Academy, passe à CoddyKit PRO. Le cours PHP Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Simuler des dépendances avec PHPUnit » ?

Créer des objets simulés pour isoler les unités et contrôler le comportement des collaborateurs. Tu pratiques PHP Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer PHP Academy ?

Aucune expérience préalable n'est requise. PHP Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Simuler des dépendances avec PHPUnit » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon PHP Academy ?

Oui. Chaque leçon PHP Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Configurer PHPUnit et écrire son premier test
  2. Assertions et méthodes de test
  3. Fournisseurs de données pour les tests paramétrés
  4. Simuler des dépendances avec PHPUnit
← Retour à PHP Academy