J'ai quelques tests dans ma suite de tests en cours d'exécution dans le test Zend_TestPHPUnit Mock Object remplaçant classe réel
On crée une maquette de Foo_Bar_Baz
via MockBuilder de PHPUnit que cette classe sa dépendance. Maintenant, dans le test pour Foo_BAR_baz
(le changement dans le cas est exprès et est nécessaire en raison de l'auto-chargement), je ne reçois pas la classe, mais plutôt une instance du simulacre, qui évidemment ne fonctionne pas. Si vous effectuez un var_dump
sur l'objet, vous obtiendrez class Foo_Bar_Baz#27115(0) { }
et il semblera donc créer une instance du simulacre. Fixer le cas de dans le simulacre met les choses au travail comme prévu.
Je n'ai jamais vu ce comportement dans des objets moqueurs avant. Pour une raison quelconque, la classe mockée est en cours de chargement en PHP, de sorte que lorsque le prochain test essaie d'instancier l'objet réel, il instancie le faux à la place. Pourquoi cela arriverait-il?
"Je ne reçois pas la classe mais plutôt une instance du simulacre" - Pouvez-vous clarifier cela? Votre code (pas le test) instancie un objet et vous vous attendez à ce qu'il soit une instance de quoi exactement et vous obtenez quoi exactement? –
Après avoir lu quelques fois peut-être cela vous aidera: Si vous créez une classe fictive et que vous la nommez après une vraie classe concrète, vous ne pourrez jamais obtenir la classe concrète dans le registre interne. –
Je suis capable d'obtenir la classe concrète avec les noms de classe la même chose. C'est seulement quand ils sont différents comme dans mon exemple que ça ne marche pas. Et normalement cela fonctionne en PHPUnit sauf dans ce cas très étrange. – Schleis