Pregunta

Estoy empezando a probar y probar mis objetos Doctrine con PHPUnit, y me gustaría volver a cargar la base de datos de mis objetos modelo nuevamente cada vez.

Mi primer intento se parece a esto:

class Tests_User extends PHPUnit_Framework_TestCase
{

    public function setUp()
    {

        Doctrine_Manager::connection('mysql://user:pass@localhost/testdb');

        Doctrine::createDatabases();
        Doctrine::createTablesFromModels('../../application/models');

    }

    public function testSavingWorks()
    {

        $user = new User();
        $user->save();

    }

    public function testSavingWorksAgain()
    {

        $user = new User();
        $user->save();

    }

    public function tearDown()
    {

        Doctrine::dropDatabases();

    }

}

El problema es que cuando se vuelve a llamar a setUp () para la segunda prueba, createTablesFromModels () falla, por lo que obtengo un error porque ninguna de las tablas está presente.

Realmente agradecería un ejemplo de cómo alguien más ha reinicializado una conexión de Doctrine para PHPUnit u otros propósitos de prueba de unidad.

¿Fue útil?

Solución

Entonces resulta que createTablesFromModels incluye los archivos y luego compara las listas de clases definidas antes y después, por lo que no funciona dos veces.

Una secuencia como la siguiente funciona cuando se repite:

Doctrine::loadModels($path);
Doctrine::createTablesFromArray(Doctrine::getLoadedModels());

Otros consejos

Echa un vistazo a este Gist de Ocramius, que muestra que puedes probar usando accesorios de datos: https: // gist .github.com / Ocramius / 3994325

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top