单元测试Doctrine 2模型

时间:2010-12-17 14:02:38

标签: unit-testing zend-framework doctrine phpunit zend-test

单元测试Doctrine 2模型的方式是什么?我在Zend Framework 1.11中使用它。它有Zend_Test,它使用PHPUnit。我认为正确使用的是PHPUnit_Extensions_Database_TestCase。在Zend Framework中,我可以使用Zend_Test_PHPUnit_Db。如何修改代码以单元测试Doctrine Models而不是Zend_Db类。

第一,我认为不是使用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 个答案:

答案 0 :(得分:2)

您想要测试什么?如果它只是模型本身 - 那不是太难。 Doctrine 2模型只是普通的PHP对象,其注释包含映射信息。这就是Doctrine 2的好处是“persinstance ignorant”:你可以像任何常规课一样测试模型。

答案 1 :(得分:2)

我发现DoctrineExtensions通过ORMTestCase扩展了PHPUnit。用法看起来像

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");
    }
}