Unit testing 单元测试理论2模型

Unit testing 单元测试理论2模型,unit-testing,zend-framework,doctrine,phpunit,zend-test,Unit Testing,Zend Framework,Doctrine,Phpunit,Zend Test,单元测试原则2模型的方法是什么?我在Zend Framework 1.11中使用它。它有Zend_Test,它使用PHPUnit。我认为正确的使用方法是。在Zend框架中,我可以使用。如何将代码修改为单元测试理论模型而不是Zend_Db类 首先,我认为我必须使用教条的东西,而不是使用Zend_Db的东西 class BugsTest extends Zend_Test_PHPUnit_DatabaseTestCase { private $_connectionMock; pr

单元测试原则2模型的方法是什么?我在Zend Framework 1.11中使用它。它有
Zend_Test
,它使用PHPUnit。我认为正确的使用方法是。在Zend框架中,我可以使用。如何将代码修改为单元测试理论模型而不是
Zend_Db

首先,我认为我必须使用教条的东西,而不是使用
Zend_Db
的东西

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模型只是带有包含映射信息的注释的普通PHP对象。这就是原则2“perinstance-innovate”的好处:您可以像任何常规类一样测试模型。

我发现它通过
或mtestcase对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");
    }
}