Jusqu'à présent, pour mes besoins de test Magento 2, j'ai utilisé PHP Unit comme (plus ou moins) testeur d'acceptation - testant les résultats des requêtes serveur et HTML faites dans un système avec mon ou mes modules installés. J'aimerais pouvoir créer mes propres tests d'intégration. Les outils de test fournis avec Magento 2 permettent-ils aux développeurs tiers de créer leurs propres tests d'intégration qui exploitent le code du framework de test de Magento? Ou allons-nous tous lancer notre propre bootstrap?
C'est
- Je suis développeur Magento
- J'aimerais créer un test d'intégration
- Je ferais mon test d'intégration pour avoir un environnement Magento entièrement bootstrap dans lequel jouer (ie gestionnaire d'objets et / ou injection de dépendance à utiliser)
- J'aimerais que mon test d'intégration prolonge le
Magento\TestFramework\TestCase\AbstractController
test, donc j'ai les mêmes aides que les tests Magento - Je voudrais pouvoir exécuter mes tests indépendamment du reste de la suite de tests (c'est-à-dire ne pas avoir à attendre 2 heures pour exécuter mes 15 secondes de tests)
- J'aimerais que mes tests soient stockés séparément des tests de Magento
Le site dev docs contient des articles de démarrage sur les tests, mais ils semblent orientés vers l'exécution des tests fournis avec Magento et non vers la création et l'exécution de vos propres tests. Il y a les anciens exemples de modules , mais ils étendent tous la PHPUnit_Framework_TestCase
classe et semblent être des tests unitaires (c'est-à-dire tester du code qui ne repose pas sur le framework Magento)
Existe-t-il un moyen fourni par Magento?
Sinon, quelqu'un a-t-il déployé sa propre configuration de manière à ce que le test de la communauté des développeurs Magento puisse l'adopter comme standard?
la source
__DIR__
devrait être suivie d'une barre oblique (/_files
). Deuxièmement, le luminaire est chargé à partir de TestFramework de sorte que le__DIR__
pointe vers le répertoire TestFramework et non vers votre propre module. LeComponentRegistrar
peut être utilisé pour cela:require $ObjectManager::getInstance()->get(ComponentRegistrar::class)->getPath('module', 'Foo_Bar').'/Test/Integration/_files/example.php';
J'ai un peu joué avec les tests d'intégration, et c'est ce que j'ai trouvé jusqu'à présent.
Fondamentalement, j'ai suivi des étapes similaires à celles de Fooman, avec quelques différences afin que le test d'intégration fasse partie de mon module.
Voici les étapes que j'ai suivies:
1- Placez vos tests d'intégration sous
app/code/Vendor/CustomModule/Test/Integration
2- Copier
dev/tests/integration/phpunit.dist.xml
versdev/tests/integration/phpunit.xml
et remplacer
avec
3- Ensuite je l'exécute à l'aide de l'outil CLI
bin/magento dev:test:run integration
Vous devez avoir à l'esprit ce que Fooman dit sur le "TESTS_CLEANUP" et le temps qu'il faut pour configurer les tests d'intégration si vous avez activé le nettoyage.
Ici, j'ajoute un exemple fonctionnel pour référence ultérieure. Vous verrez comment vous pouvez accéder au gestionnaire d'objets et générer une instance de classes Magento, ainsi que l'utilisation des appareils Magento.
application / code / fournisseur / module personnalisé / contrôleur / commande / info.php
app / code / Vendor / CustomModule / etc / frontend / routes.xml
app / code / Vendor / CustomModule / etc / module.xml
application / code / fournisseur / module personnalisé / test / intégration / contrôleur / commande / infotest.php
app / code / Vendor / CustomModule / registration.php
la source