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

标签 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 连接的示例。

最佳答案

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

像下面这样的序列在重复时有效:

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

关于php - 使用 PHPUnit 对 Doctrine 对象进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/299255/

相关文章:

php - groupBy() 方法给出空结果 Yii2

PHP MYSQL 更新表

php - a href tel 和标准浏览器

php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP

testing - 如何使用 phpunit 检查 TeSTLoader 是否工作?

PHP单元测试来自不同类的外部静态方法调用

symfony - 如何处理架构更新时的自定义 sql 函数?

php - 为什么 PHP Doctine 的 free() 不工作?

symfony1 - 如何在管理生成器中将 sfWidgetFormDoctrineChoice 设为 "order by"

php - 如何在 PHPUnit/Laravel 中模拟 JSON 文件