Venant de Java, je travaille sur le code php et je veux ajouter des tests unitaires pour mon code.Dépendances d'injection automatique pour les tests unitaires
J'ai une classe de service qui a une classe de DAO comme ci-dessous:
class ServiceClass {
private $daoClass;
public function methodToTest(){}
}
Je ne fournis pas un constructeur, ni j'ajouter une méthode setter pour la propriété daoClass
. C'est parce qu'il sera injecté en utilisant le conteneur PHP-DI IoC. Pour les tests unitaires, j'utilise phpunit
, donc je me moque de l'objet daoClass
et j'utilise la réflexion pour injecter cette propriété directement (puisqu'il n'y a pas de constructeur ou de setter pour cette propriété).
En Java, nous pouvons facilement faire cela sans la substance de réflexion en utilisant @InjectMocks
annotation ou MockitoAnnotations.initMocks
méthode.
Je ne suis pas en mesure de trouver une manière similaire de le faire dans phpunit
.
En outre, une question différente mais liée, est-il possible dans mon test que je peux créer une propriété privée et annoter avec une balise, et il est automatiquement converti en une instance d'objet simulacre? Comme comment mockito dans Java le fait @Mock
annotation.
avez-vous vérifié cela? https://github.com/eltrino/PHPUnit_MockAnnotations –
comme je suppose que PHP-DI [injection sur la fonction des instances existantes] (http://php-di.org/doc/inject-on-instance.html) est utilisé. Envisageriez-vous de l'utiliser pour assembler des objets testés? Fondamentalement, vous faites par les mains mêmes choses qu'il fait .. – xmike