我开始尝试使用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连接或其他单元测试目的。

有帮助吗?

解决方案

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

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

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

其他提示

查看Ocramius的这个Gist,它显示您可以使用数据夹具进行测试: https:// gist .github.com / Ocramius / 3994325

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top