2010-12-17 8 views
2

Was ist der Weg zum Unit Test Doctrine 2 Modelle? Ich benutze es mit Zend Framework 1.11. Es hat Zend_Test, die PHPUnit verwendet. Ich denke, das richtige zu verwenden ist PHPUnit_Extensions_Database_TestCase. In Zend Framework kann ich Zend_Test_PHPUnit_Db verwenden. Wie kann ich den Code zu Unit Test Doctrine Models statt Zend_Db Klassen ändern.Unit Testing Doctrine 2 Modelle

1., denke ich, statt Zend_Db Sachen zu verwenden, ich habe Lehre Zeug statt

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; 
    } 
    ... 
} 

Antwort

2

Ich fand DoctrineExtensions, die Erweiterungen für PHPUnit über ORMTestCase hat. Die Verwendung sieht so aus:

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

Was genau tun Sie testen wollen, verwenden? Wenn es nur das Modell an sich ist - das ist nicht allzu schwierig. Doctrine 2-Modelle sind reine PHP-Objekte mit Anmerkungen, die die Zuordnungsinformationen enthalten. Das ist das Gute daran, dass Doktrin 2 "persistent ignorant" ist: Man kann die Modelle wie jede normale Klasse testen.