php - 我如何在 PHP 中重新创建我的数据库(例如用于单元测试)

标签 php zend-framework phpunit doctrine-orm zend-test

我如何从 PHP 重新创建我的数据库,也许插入默认数据。目前,我打算将该行为用于单元测试。

我正在使用 Doctrine 2、Zend Framework 1.11、Zend_Test 进行单元测试

我可以使用 CLI

doctrine orm:schema-tool:update --force

或者

doctrine orm:schema-tool:drop --force
doctrine orm:schema-tool:create

我正在寻找 PHP 替代品,目前已找到 this

但它看起来像

$tool = new \Doctrine\ORM\Tools\SchemaTool($em);
$classes = array(
  $em->getClassMetadata('Entities\User'),
  $em->getClassMetadata('Entities\Profile')
);
$tool->dropSchema($classes, \Doctrine\ORM\Tools\SchemaTool::DROP_DATABASE);
$tool->createSchema($classes);

而且我真的不想指定模型类,尤其是在开发中它们可以更改的时候。它应该只从...中指定的所有类中读取...就像使用 CLI 一样,您不需要指定所需的类?

$driverImpl = $config->newDefaultAnnotationDriver(array(realpath('../models')));
$config->setMetadataDriverImpl($driverImpl);

最佳答案

你可以使用

The PHPUnit Extension for Doctrine offers several hooks into PHPUnits Database extension and offers a very convenient way to test your Doctrine 2 code against a Database.

自述文件中有一些示例,包括一个演示如何即时创建数据库模式的示例。 Benjamin Eberlei 是 Doctrine 2 的核心贡献者。

另请参阅 B. Eberlei 的 Ultimate Guide to DB Testing with PHPUnit

关于php - 我如何在 PHP 中重新创建我的数据库(例如用于单元测试),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4470126/

相关文章:

php - Zend Framework 特定模块中操作的 URL

php - Laravel 中的单元测试 : Error when setting the Currently Authenticated User

php - 如何使用 PHPUnit 和模拟对象测试是否使用正确的参数调用相同的方法

php - 获取 2 个输入值中的任意一个并保存到 PHP MySQL 中的同一数据库字段

php - 使用查询生成器更新时 Laravel 模型观察者类不起作用

php - Laravel 4 Eloquent /模型关系

php - 是否可以模拟 protected 属性和方法

php - 在sql查询中获取递归数据

zend-framework - 如何在 Zend_Db 和 QuoteInto 的更新语句中使用多个条件

php - Zend 框架 : Incuding other controllers in index view