Frage

Ich beginne meine Lehre zu versuchen und testen mit PHPUnit-Objekte, und möchte die DB laden von meinem Modell neu jedes Mal Objekte.

Mein erster Versuch sieht ungefähr wie folgt aus:

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

    }

}

Das Problem ist, dass, wenn setUp () für den zweiten Test erneut aufgerufen wird, createTablesFromModels () fehlschlägt, so dass ich einen Fehler, da keine der Tabellen vorhanden ist.

Ich würde wirklich zu schätzen, ein Beispiel dafür, wie jemand anderes neu initialisiert hat eine Lehre Verbindung für PHPUnit oder eine andere Einheit zu Testzwecken.

War es hilfreich?

Lösung

So stellt sich heraus, dass createTablesFromModels enthält die Dateien in und vergleicht dann die Listen der definierten Klassen vor und nach, weshalb es nicht zweimal zu arbeiten.

Eine Sequenz wie die folgenden Werke, wenn wiederholt:

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

Andere Tipps

Sehen Sie sich diese Gist von Ocramius aus, die zeigt, dass Sie Daten strahlende Leuchten testen können: https: // Kern .github.com / Ocramius / 3994325

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top