使用PHPUnit对Doctrine对象进行单元测试

时间:2008-11-18 16:24:39

标签: php doctrine phpunit

我开始尝试使用PHPUnit测试我的Doctrine对象,并希望每次都重新从模型对象重新加载数据库。

我的第一次尝试看起来像这样:

class Tests_User extends PHPUnit_Framework_TestCase
{

    public function setUp()
    {

        Doctrine_Manager::connection('mysql://user:pass@localhost/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();

    }

}

问题是当第二次测试再次调用setUp()时,createTablesFromModels()失败,因此我收到错误,因为没有表存在。

我真的很感激其他人如何为PHPUnit重新初始化Doctrine连接或其他单元测试目的。

2 个答案:

答案 0 :(得分:1)

因此,事实证明createTablesFromModels包含文件,然后比较之前和之后定义的类的列表,这就是为什么它不能工作两次。

以下序列在重复时起作用:

Doctrine::loadModels($path);
Doctrine::createTablesFromArray(Doctrine::getLoadedModels());

答案 1 :(得分:0)

查看Ocramius的这个要点,它表明你可以使用数据夹具进行测试:https://gist.github.com/Ocramius/3994325