tutorial - Prueba unitaria de objetos Doctrine con PHPUnit
pruebas unitarias codeigniter (3)
Estoy empezando a probar y probar mis objetos de Doctrine con PHPUnit, y me gustaría volver a cargar la base de datos de mis objetos de modelo cada vez.
Mi primer intento se ve así:
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 llama de nuevo a setUp () para la segunda prueba, createTablesFromModels () falla, por lo que aparece un error porque ninguna de las tablas está presente.
Realmente agradecería un ejemplo de cómo alguien más ha reiniciado una conexión de Doctrine para PHPUnit u otras pruebas de unidades.
Entonces, createTablesFromModels incluye los archivos y luego compara las listas de clases definidas antes y después, razón por la cual no funciona dos veces.
Una secuencia como la siguiente funciona cuando se repite:
Doctrine::loadModels($path);
Doctrine::createTablesFromArray(Doctrine::getLoadedModels());
En caso de que no haya encontrado esto, Jani ha publicado un enfoque para ayudar a automatizar el proceso de instalación / desmontaje.
http://codeutopia.net/blog/2008/08/27/database-helper-for-phpunit/
Mira este Gist de Ocramius, que muestra que puedes probar el uso de accesorios de datos: https://gist.github.com/Ocramius/3994325