2008-11-18 117 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());