Maison  >  Article  >  développement back-end  >  Un guide technique pour les tests simulés en PHP

Un guide technique pour les tests simulés en PHP

王林
王林original
2023-05-22 08:01:35983parcourir

Avec le développement continu du développement logiciel, de plus en plus de projets doivent être testés. La technologie des tests simulés est l’une des méthodes de test les plus importantes. Les tests simulés font référence à l'utilisation d'objets fictifs pour remplacer des objets réels afin de réaliser des tests détaillés du comportement d'exécution du code. Cet article présentera la technologie de test simulé en PHP, y compris les concepts de base, les méthodes de mise en œuvre, les méthodes d'utilisation et l'analyse des avantages et des inconvénients.

1. Concepts de base des tests simulés

  1. Mock Object

Mock Object fait référence à un faux objet, utilisé pour remplacer l'objet réel et fournir une imitation des interfaces et des comportements. Les objets simulés par Mock Object sont généralement créés manuellement par les programmeurs.

  1. Stub

Stub est un type d'objet simulé, qui ne fournit généralement qu'une réponse très simple, comme renvoyer une valeur. Les stubs peuvent être utilisés pour tester les valeurs de retour simples des fonctions, les résultats des requêtes de base de données, les connexions réseau, etc.

  1. Mock

Mock est une autre forme de Mock Object En plus de fournir une réponse simple, il peut également enregistrer les appels et les paramètres passés à ses méthodes. Le plus grand avantage des tests simulés est qu’ils peuvent vérifier si le code est appelé correctement.

  1. Spy

Spy est une autre forme d'objet simulé, qui peut enregistrer les paramètres transmis et les méthodes appelées.

2. Méthode d'implémentation

Pour implémenter les tests Mock en PHP, il existe généralement deux manières : l'implémentation manuelle et l'utilisation du framework Mock.

  1. Implémentation manuelle

La clé pour implémenter manuellement les tests simulés est d'utiliser le mécanisme de réflexion de PHP pour accéder aux classes et aux méthodes. Les étapes générales sont les suivantes :

  • Écrivez un cours simulé.
  • Instancier la classe Mock.
  • Utilisez le mécanisme de réflexion de PHP pour obtenir les classes et méthodes requises.
  • Remplacez les méthodes par des valeurs de retour fixes.
  1. Utiliser le framework Mock

Il existe de nombreux frameworks Mock actuellement utilisés pour PHP, tels que PHPUnit, Mockery, Phake, etc. Ils offrent tous deux un haut degré de simulation et de testabilité.

Parmi eux, PHPUnit est un framework de test populaire et un framework de test Mock. Mockery est un framework de test Mock axé sur le code avec une syntaxe claire et une configuration flexible.

3. Comment utiliser

Ce qui suit prend le framework PHPUnit comme exemple pour présenter l'utilisation des tests simulés en PHP.

  1. Installer PHPUnit

Pour installer PHPUnit, vous pouvez utiliser Composer via la commande suivante :

composer require --dev phpunit/phpunit

  1. Écrire des cas de test

Lors de l'écriture de cas de test, vous devez créer un Mock objets et objets Stub . PHPUnit fournit quelques méthodes pour créer ces objets.

Par exemple, nous pouvons créer un objet Mock en utilisant la méthode suivante :

$mock = $this->getMockBuilder('SomeClass')->getMock();

Nous pouvons également créer un Stub en utilisant ce qui suit méthode :

$stub = $this->getMockBuilder('SomeClass')->disableOriginalConstructor()->getMock();

Lorsque vous utilisez des tests simulés, vous pouvez vous moquer de fonctions ou de méthodes d'instance en écrivant des cas de test, comme indiqué ci-dessous :

public function testFunctionMock()
{

$function = $this->getMockBuilder('NamespaceFunctions')->setMethods(['doSome'])->getMock();
$function->expects($this->once())
         ->method('doSome')
         ->willReturn('hello');
$this->assertEquals('hello', $function->doSome());   

}

Dans le cas de test ci-dessus, nous nous sommes moqués d'une fonction et avons ajouté la méthode doSome en utilisant setMethods. Ensuite, nous définissons une attente pour la méthode fictive : elle doit être appelée une seule fois et renvoyer la valeur « hello ».

  1. Exécuter des cas de test

Utilisez le propre programme d'exécution de tests de PHPUnit pour exécuter des cas de test, comme indiqué ci-dessous :

./vendor/bin/phpunit tests

Quatre analyses des avantages et des inconvénients

Les tests simulés peuvent non seulement être efficaces. Optimisez le code, accélérez les tests et permettez aux programmeurs de se concentrer sur l'amélioration de la qualité du code.

  1. Avantages
  • Il peut simuler et couvrir tous les chemins d'exécution de code et améliorer la fiabilité du code.
  • De nouveaux cas de tests peuvent être mis en œuvre à tout moment.
  • Peut accélérer les tests et fournir des commentaires plus rapides.
  1. Les inconvénients
  • peuvent avoir un certain impact sur les performances.
  • Les cas de test simulés ne peuvent pas fournir des tests complets du code, c'est-à-dire que les classes et les méthodes impliquées dans Mock ont ​​une couverture étroite.
  • Cela nécessite un certain temps et des efforts pour rédiger et maintenir des cas de test simulés.

5. Résumé

La technologie de test simulé est un élément indispensable des tests logiciels. Pour implémenter la technologie de test simulé en PHP, vous pouvez utiliser des frameworks de test tels que PHPUnit, ou vous pouvez l'implémenter manuellement. Les tests simulés peuvent vérifier l'exactitude du code et améliorer la fiabilité du code ainsi que la qualité du code du programmeur en simulant et en couvrant tous les chemins d'exécution du code. Bien que la technologie de test simulé nécessite un certain temps et des efforts pour écrire et maintenir des cas de test, elle permet en général aux développeurs d'utiliser le code avec plus de confiance, améliorant ainsi la qualité du code et l'efficacité des tests.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn