unit-testing - que - phpunit xml
¿Cómo configurar los accesorios de Doctrine2 cuando se prueba con PHPUnit? (3)
Eche un vistazo a esta solución . No creo que usar transacciones sea la mejor idea, ya que es probable que use transacciones en su código. Esta solución sugiere cargar accesorios manualmente en cada prueba.
Estoy tratando de comenzar con Symfony2 y he estado tratando de configurar pruebas automatizadas para la capa de modelo de mi aplicación. El libro de Symfony2 habla de pruebas unitarias para controladores, pero no puedo encontrar muchos ejemplos de pruebas de modelos.
Me gustaría tener un conjunto de datos limpio para trabajar antes de ejecutar cada prueba y encontrar estos artículos:
- http://blog.sznapka.pl/fully-isolated-tests-in-symfony2/
- http://symfony.com/doc/current/cookbook/doctrine/doctrine_fixtures.html
Basado en el artículo sznapka.pl, actualmente tengo una prueba ejecutándose sin errores, pero aunque se crea el esquema de prueba, los dispositivos no se cargan. No puedo ver por qué, ni siquiera una forma de solucionar esto.
Antecedentes: Anteriormente trabajé con CakePHP, donde la carga de los dispositivos se maneja en gran medida de forma automática. ¿Tal vez tengo un enfoque equivocado para Symfony / Doctrine?
Hay un LiipFunctionalTestBundle muy práctico que simplifica el trabajo con los dispositivos en prueba. La idea básica es crear una base de datos cada vez que ejecutas las pruebas y luego cargas los accesorios. Ahora puede guardar los modelos, eliminar, cada prueba será la misma.
Sí DoctrineFixtures es una buena opción.
Para probar el modelo: realmente no necesita cargar accesorios en la base de datos, debe crear objetos con los datos que desee (inyectándoles setters).
Para probar el controlador: cargue los accesorios de doctrina y use las transacciones de doctrina para que el estado de su base de datos sea el mismo antes de cada caso de prueba, comience la transacción en setUp()
y tearDow()
en tearDow()
. (Si su controlador también usa transacciones, aún no he encontrado una buena solución).
Para el error de los accesorios, si no tiene ningún error y sus accesorios no están cargados, quizás haya olvidado una convención de nomenclatura. ¿Puedes mostrarnos algún código?