我开始尝试使用 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/