Учение о модульном тестировании 2 модели - PullRequest
2 голосов
/ 17 декабря 2010

Какой способ модульного тестирования моделей Doctrine 2? Я использую его с Zend Framework 1.11. Он имеет Zend_Test, который использует PHPUnit. Я думаю, что правильно использовать это PHPUnit_Extensions_Database_TestCase. В Zend Framework я могу использовать Zend_Test_PHPUnit_Db. Как я могу изменить код для модульного тестирования моделей Doctrine вместо Zend_Db классов.

1-й, я думаю, вместо того, чтобы использовать Zend_Db материал, я должен использовать материал Doctrine вместо

class BugsTest extends Zend_Test_PHPUnit_DatabaseTestCase
{
    private $_connectionMock;

    protected function getConnection()
    {
        if($this->_connectionMock == null) {
            $connection = Zend_Db::factory(...);
            $this->_connectionMock = $this->createZendDbConnection(
                $connection, 'zfunittests'
            );
            Zend_Db_Table_Abstract::setDefaultAdapter($connection);
        }
        return $this->_connectionMock;
    }
    ...
}

Ответы [ 2 ]

2 голосов
/ 25 декабря 2010

Я нашел DoctrineExtensions, который имеет расширения для PHPUnit через ORMTestCase. Использование выглядит примерно так:

namespace MyProject\Tests;

use DoctrineExtensions\PHPUnit\OrmTestCase

class EntityFunctionalTest extends OrmTestCase
{
    protected function createEntityManager()
    {
        return Doctrine\ORM\EntityManager::create(..);
    }

    protected function getDataSet()
    {
        return $this->createFlatXmlDataSet(__DIR__."/_files/entityFixture.xml");
    }
}
2 голосов
/ 20 декабря 2010

Что именно вы хотите проверить? Если это просто модель как таковая - это не так уж сложно. Модели Doctrine 2 - это просто обычные объекты PHP с аннотациями, содержащими информацию об отображении. Это хорошо, что Doctrine 2 «невежественен»: вы можете тестировать модели, как любой обычный класс.

...