Модульное тестирование объектов Doctrine с помощью PHPUnit - PullRequest
4 голосов
/ 18 ноября 2008

Я начинаю пытаться тестировать свои объекты Doctrine с помощью PHPUnit и хотел бы каждый раз заново загружать БД из объектов моей модели.

Моя первая попытка выглядит примерно так:

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

    }

}

Проблема заключается в том, что при повторном вызове setUp () для второго теста createTablesFromModels () завершается ошибкой, поэтому я получаю сообщение об ошибке, поскольку ни одна из таблиц отсутствует.

Я был бы очень признателен за пример того, как кто-то еще повторно инициализировал соединение Doctrine для PHPUnit или других целей модульного тестирования.

Ответы [ 2 ]

1 голос
/ 19 ноября 2008

Таким образом, оказывается, что createTablesFromModels включает файлы в и затем сравнивает списки определенных классов до и после, поэтому он не работает дважды.

Последовательность, подобная следующей, работает при повторении:

Doctrine::loadModels($path);
Doctrine::createTablesFromArray(Doctrine::getLoadedModels());
0 голосов
/ 26 октября 2013

Проверьте этот Gist от Ocramius, который показывает, что вы можете тестировать, используя данные фикстуры: https://gist.github.com/Ocramius/3994325

...