Unidade teste doutrina objetos com PHPUnit
Pergunta
Estou começando a experimentar e testar minha doutrina objetos com PHPUnit e gostaria de recarregar o DB de minha objetos de modelo de novo a cada vez.
Minha primeira tentativa é algo como isto:
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();
}
}
O problema é que quando a Instalação () é chamado novamente para o segundo teste, createTablesFromModels () falhar, então eu recebo um erro porque nenhuma das mesas estão presentes.
Eu realmente aprecio um exemplo de como alguém tenha reinicializado uma conexão Doutrina para outros fins de testes de unidade PHPUnit ou.
Solução
Assim, verifica-se que createTablesFromModels inclui os arquivos e, em seguida, compara as listas de classes definidas antes e depois, é por isso que ele não está funcionando duas vezes.
A seqüência como as seguintes obras quando repetidas:
Doctrine::loadModels($path);
Doctrine::createTablesFromArray(Doctrine::getLoadedModels());
Outras dicas
Confira este Síntese de Ocramius, o que mostra que você pode testar usando luminárias de dados: https: // essência .github.com / Ocramius / 3994325