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

4
我要开始使用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()失败了,因此我会收到错误消息,因为没有一个表存在。
我真的很希望能够看到其他人如何重新初始化Doctrine连接以进行PHPUnit或其他单元测试。
2个回答

1

1

原来createTablesFromModels会包含文件,然后比较定义类的列表,这就是为什么它不能重复工作的原因。

以下类似的序列在重复时有效:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接