Hasta ahora para mis necesidades de prueba de Magento 2, he estado usando la Unidad PHP como (más o menos) un probador de aceptación, probando los resultados de las solicitudes de servidor y HTML realizadas en un sistema con mi (s) módulo (s) instalado (s). Me gustaría poder crear mis propias pruebas de integración. ¿Las herramientas de prueba que se incluyen con Magento 2 permiten a los desarrolladores externos crear sus propias pruebas de integración que aprovechan el código del marco de prueba de Magento? ¿O todos estaremos rodando nuestro propio arranque?
Es decir
- Soy un desarrollador de Magento
- Me gustaría crear una prueba de integración.
- Me gustaría que mi prueba de integración tuviera un entorno Magento de arranque completo para jugar (es decir, administrador de objetos y / o inyección de dependencia para usar)
- Me gustaría que mi prueba de integración extienda la
Magento\TestFramework\TestCase\AbstractController
prueba para tener los mismos ayudantes que las pruebas de Magento - Me gustaría poder ejecutar mis pruebas de forma aislada del resto del conjunto de pruebas (es decir, no tener que esperar 2 horas para ejecutar mis 15 segundos de pruebas)
- Me gustaría que mis pruebas se almacenen por separado de las pruebas de Magento
El sitio de documentos de desarrollo tiene algunos artículos iniciales sobre pruebas, pero parecen orientados a ejecutar las pruebas que se envían con Magento y no a crear y ejecutar sus propias pruebas. Están los módulos de muestra antiguos , pero todos extienden la PHPUnit_Framework_TestCase
clase y parecen ser pruebas unitarias (es decir, código de prueba que no se basa en el marco de Magento)
¿Hay alguna forma proporcionada por Magento de hacer esto?
Si no, ¿alguien ha implementado su propia configuración de tal manera que la prueba de la comunidad de desarrolladores de Magento pueda adoptarla como estándar?
fuente
__DIR__
debe ir seguido de una barra diagonal (/_files
). En segundo lugar, el dispositivo se carga desde TestFramework para que__DIR__
realmente apunte al directorio TestFramework y no a su propio módulo. SeComponentRegistrar
puede usar para esto:require $ObjectManager::getInstance()->get(ComponentRegistrar::class)->getPath('module', 'Foo_Bar').'/Test/Integration/_files/example.php';
He jugado un poco con las pruebas de integración, y esto es lo que he encontrado hasta ahora.
Básicamente, he seguido pasos similares a lo que dijo Fooman, con algunas diferencias para que la prueba de integración sea parte de mi módulo.
Estos son los pasos que seguí:
1- Coloca tus pruebas de integración debajo
app/code/Vendor/CustomModule/Test/Integration
2- Copiar
dev/tests/integration/phpunit.dist.xml
adev/tests/integration/phpunit.xml
y reemplazar
con
3- Luego lo ejecuto usando la herramienta CLI
bin/magento dev:test:run integration
Debe tener en cuenta lo que dice Fooman sobre "TESTS_CLEANUP" y el tiempo que lleva configurar las pruebas de integración si tiene habilitada la limpieza.
Aquí agrego un ejemplo funcional para mayor referencia. Verá cómo puede acceder al administrador de objetos y generar instancias de las clases de Magento, además de utilizar los accesorios de Magento.
app / code / Vendor / CustomModule / Controller / Order / Info.php
app / code / Vendor / CustomModule / etc / frontend / routes.xml
app / code / Vendor / CustomModule / etc / module.xml
app / code / Vendor / CustomModule / Test / Integration / Controller / Order / InfoTest.php
app / code / Vendor / CustomModule / Registration.php
fuente