Desarrollo impulsado por las pruebas con Magento
-
16-10-2019 - |
Pregunta
Estoy interesado en las pruebas unitarias en Magento y he comenzado a mirar el módulo Ecomdev.
Sin embargo, no creo que sea posible hacer TDD completo con Magento. Para los siguientes escenarios, ¿cómo realizarías TDD?
- Actualizar scripts en general
- Actualizar específicamente los scripts agregando atributos del producto y los gustos
- Sistema XML y almacenar valores de configuración
- Reescrituras de núcleo
- Controladores
- etcétera etcétera.
Creo que hay muchos escenarios en los que no puedes realizar TDD en Magento. ¿Estoy equivocado?
¿Cómo están otras personas pruebas unitarias/TDD usando Magento?
Solución
Las pruebas son difíciles en Magento debido a la estructura y al diseño "malo". No me malinterpreten, el diseño es excelente, si me preguntas, pero no fue diseñado para probar. Los singletons son un no-go para el código comprobable.
Dicho esto, puedes hacer muchas cosas con ecomdev_phpunit:
Actualizar scripts en general
Probar los scripts de actualización, ya sea que funcionen o no, es difícil. (AFAIK) Los scripts se ejecutan antes de las pruebas, por lo que puede probar los resultados. ¿Existe un atributo o fue una tabla creada? Puede verificar que la versión de su módulo sea correcta y que los scripts existe. Lo que no puede hacer (en mi opinión) es verificar la lógica en el script.
Actualizar específicamente los scripts agregando atributos del producto y los gustos
Como dije anteriormente, creo que esto es fácil de probar. Simplemente pruebe si las cosas suceden o no suceden.
Sistema XML y almacenar valores de configuración
Puede verificar los valores de configuración. Y puede escribir pruebas de controlador para verificar la salida de los controladores. Por lo tanto, puede verificar si el valor de configuración predeterminado (o la de la base de datos) es correcto y puede verificar si la configuración de System.xml y los campos de formulario se hacen eco.
Reescrituras de núcleo
No estoy seguro de lo que quieres decir aquí.
Has comprobado \EcomDev_PHPUnit_Test_Case_Config::assertModelAlias
, assertBlockAlias
, etc.? Pasas core/encryption
a él y afirmar la clase esperada, por ejemplo Ikonoshirt_Pbkdf2_Model_Stub_CE
. Si su reescritura funciona, la prueba pasa. Si tiene dos reescrituras competitivas, una de las pruebas falla.
Controladores
Echar un vistazo a \EcomDev_PHPUnit_Test_Case_Controller
.