Question

Je commence à essayer de tester mes objets Doctrine avec PHPUnit et je souhaite recharger à nouveau la base de données à partir de mes objets modèle.

Ma première tentative ressemble à quelque chose comme ceci:

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();

    }

}

Le problème est que, lorsque setUp () est appelé à nouveau pour le deuxième test, createTablesFromModels () échoue. Un message d'erreur s'affiche, car aucune des tables n'est présente.

J'apprécierais vraiment un exemple montrant comment quelqu'un d'autre a réinitialisé une connexion Doctrine pour PHPUnit ou à d'autres fins de tests unitaires.

Était-ce utile?

La solution

Il s'avère donc que createTablesFromModels inclut les fichiers, puis compare les listes de classes définies avant et après, raison pour laquelle cela ne fonctionne pas deux fois.

Une séquence comme celle ci-dessous fonctionne lorsqu'elle est répétée:

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

Autres conseils

Découvrez cette liste d’opérateurs d’Ocramius, qui indique que vous pouvez effectuer des tests à l’aide de données fixes: https: // gist .github.com / Ocramius / 3994325

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top