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.

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top