2008-11-18 128 views
4

我開始嘗試使用PHPUnit測試我的Doctrine對象,並且希望每次都重新從我的模型對象重新加載數據庫。使用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());