2008-11-18 6 views
4

PHPUnit을 사용하여 Doctrine 객체를 테스트하기 시작했으며 매번 모델 객체에서 DB를 새로 고침하고 싶습니다.PHPUnit을 사용한 Doctrine 객체

내 첫 번째 시도는 다음과 같이 보입니다 :

class Tests_User extends PHPUnit_Framework_TestCase 
{ 

    public function setUp() 
    { 

     Doctrine_Manager::connection('mysql://user:[email protected]/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(); 

    } 

} 

문제는 설치() 두 번째 테스트를 위해 다시 호출 될 때, createTablesFromModels()가 실패입니다, 그래서 오류가 발생하기 때문에 테이블 없음 존재합니다.

다른 사람들이 PHPUnit 또는 다른 단위 테스트 목적으로 Doctrine 연결을 다시 초기화 한 사례에 대해 감사드립니다.

답변

1

그래서 createTablesFromModels에 파일이 포함되어 있으며 정의 된 클래스 목록을 비교하기 때문에 앞뒤에 정의 된 클래스 목록이 비교되므로 두 번 작동하지 않습니다. 다음 작품 같은

시퀀스 반복 :

이미이 발견되지 않은 경우
Doctrine::loadModels($path); 
Doctrine::createTablesFromArray(Doctrine::getLoadedModels()); 
관련 문제