Outils pour les tests unitaires dans Magento

23

Qu'utilisez-vous pour les tests unitaires dans Magento? Ou que savez-vous des tests unitaires et de Magento? Que vous fassiez TDD ou que vous souhaitiez simplement avoir une couverture de test unitaire pour les composants de votre projet, vous avez besoin d'outils pour le faire.

La première approche de base consiste à utiliser du phpunit ordinaire, mais il y a des choses qui nécessitent des gadgets supplémentaires pour rendre Magento "testable".

Tout ce avec quoi j'ai travaillé est lié à phpunit:

Y a-t-il d'autres options?

FlorinelChis
la source

Réponses:

14

Consultez PHPSpec avec MageSpec si vous voulez quelque chose qui ne soit pas basé sur PHPUnit, mais avec une intégration Magento. Son utilisable, mais pas tout à fait prêt pour les heures de grande écoute. Pour se moquer, PHPSpec 2 utilise Prophecy (ce qui est génial), mais n'aime pas du tout les getters et setters magiques. Pour cette raison, il vaut mieux utiliser Mockery à la place, ce qui fonctionne bien (et j'aime aussi beaucoup).

Ensuite, il y a aussi Behat avec BehatMage pour BDD avec Magento. Vaut le détour, mais il échoue par exemple si vous souhaitez tester différentes vues de magasin sur différents domaines.

Il existe également une extension de BehatMage appelée MageBehat (dénomination horrible!), Qui est issue d'un hackathon. Il fournit de nombreuses actions spécifiques à Magento à BehatMage, mais pour être honnête, certaines des solutions de contournement utilisées sont plus un hack que de vraies solutions aux problèmes sous-jacents. Pourtant, c'est utilisable.

J'espère voir les deux projets - MageSpec et BehatMage - prospérer à l'avenir.

Vinai
la source
Merci Vinai pour ta réponse. Je connais BehatMage et le travail effectué par l'équipe d'Inviqa / Session Digital (je ne connais pas la structure de leur entreprise) ... Je ne cherchais que des trucs phpunit, Behat / BehatMage ce n'est pas si attrayant pour moi, j'ai joué avec MageSpec il y a quelque temps.
FlorinelChis
L'anglais n'est pas ma langue maternelle, les détails que j'ai fournis auraient pu être plus clairs. Je fais des recherches pour le groupe d'utilisateurs de Londres Magento - décembre.
FlorinelChis
4

PHPUnit est ce que Magento 2 utilise. Voici un exemple de fichier sur GitHub. https://github.com/magento/magento2/blob/master/dev/tests/unit/testsuite/Magento/Captcha/Helper/DataTest.php . (J'ai choisi ce fichier au hasard.) Vous voudrez peut-être jeter un coup d'œil à l'approche de test de Magento 2 afin que tout ce que vous faites maintenant soit compatible avec Magento 2 lors de sa sortie.

Alan Kent
la source
Je ne pense pas que l'OP parle de Magneto 2 ici.
Marius
3

Vous devriez aller avec EcomDev PHPUnit .

Je crois personnellement que tous les développeurs de Magento devraient s'efforcer de trouver une solution de test unitaire cohérente. EcomDev fournit le plus communément utilisé et le plus mature de ces frameworks, vous avez donc déjà un bassin décent de développeurs expérimentés. L'utilisation d'un cadre unique réduit également la nécessité d'installer un bajillion de cadres différents.

Cependant, EcomDev PHPUnit a cette étrange convention de mettre les tests directement à côté du code de production. Heureusement, cela est facilement résolu en modifiant quelques lignes de code. EcomDev prend également son temps avec les mises à jour (bien que leur dépôt Github montre des signes d'activité, ils sont donc clairement toujours en vie).

Thai Phan
la source
Donc, en disant tout cela, y a-t-il un dépôt quelque part qui a un ensemble de tests unitaires définis (en utilisant ecomdev_unittest) qui teste les fonctionnalités de base? (Je sais que MTAF fait cela, mais y a-t-il des tests unitaires prédéfinis quelque part?)
ProxiBlue
1
@ProxiBlue Non, je n'en connais pas. C'est une assez bonne idée pour un projet communautaire, cependant.
Thai Phan
2

Pour les tests unitaires, EcomDev PHPUnit est le meilleur.

Vous souhaitez peut-être essayer des tests fonctionnels sur Magento? Exemple avec casperjs: https://github.com/jacquesbh/hackathon-casperjs/

Jacques Bodin-Hullin
la source
1
il y avait une question différente à ce sujet.
FlorinelChis