Comment se moquer des méthodes privées dans PHPUnit
Problème :
Dans certains scénarios, les tests des sections spécifiques d'une classe peuvent être difficiles en raison de la présence de méthodes privées appelées en interne. Comment pouvons-nous écraser les résultats d'une méthode privée pour tester le code souhaité ?
Réponse :
Importance de l'API publique :
En règle générale, lors du test d'une classe, il est recommandé de se concentrer sur son API publique car elle représente le contrat proposé par votre classe. Les méthodes privées et protégées sont des détails d'implémentation et ne devraient pas affecter la stabilité de vos tests.
Test des modifications de l'état global :
Dans certains cas, une méthode privée peut contenir de la logique cela dépend de l’état global, ce qui rend les tests difficiles. Pour résoudre ce problème, envisagez de refactoriser votre code pour éliminer l'état global et introduire des dépendances qui peuvent être injectées dans la classe.
Utilisation du framework Mocking pour se moquer des méthodes privées :
Si il est inévitable de tester directement une méthode privée, PHPUnit fournit un moyen de se moquer des méthodes privées en utilisant son framework de simulation. Cependant, cette approche est généralement déconseillée car elle rompt l'encapsulation et peut conduire à une dépendance excessive aux détails d'implémentation.
Pour simuler une méthode privée à l'aide de PHPUnit, vous pouvez suivre ces étapes :
Citation de "Pragmatic Unit Testing":
"En général, vous Je ne veux pas casser une encapsulation pour le plaisir de tester... La plupart du temps, vous devriez pouvoir tester une classe en exerçant ses méthodes publiques."
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!