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

Jie*_*eng 7 php phpunit zend-framework zend-test doctrine-orm

我如何从PHP,重新创建我的数据库,可能插入默认数据.目前,我打算使用单元测试的行为.

我使用Doctrine 2,Zend Framework 1.11 Zend_Test进行单元测试

我可以使用CLI

doctrine orm:schema-tool:update --force
Run Code Online (Sandbox Code Playgroud)

要么

doctrine orm:schema-tool:drop --force
doctrine orm:schema-tool:create
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个PHP替代品,到目前为止找到了这个

但它看起来像

$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);
Run Code Online (Sandbox Code Playgroud)

而且我真的不想指定模型类,尤其是当它们可以改变时.它应该只读取下面...中指定的所有类...就像使用CLI一样,您不需要指定所需的类?

$driverImpl = $config->newDefaultAnnotationDriver(array(realpath('../models')));
$config->setMetadataDriverImpl($driverImpl);
Run Code Online (Sandbox Code Playgroud)

Gor*_*don 5

您可以使用

PHPUnit Extension for Doctrine为PHPUnits Database扩展提供了几个钩子,并提供了一种非常方便的方法来针对数据库测试Doctrine 2代码.

自述文件中有一些示例,包括一个示例,说明如何动态创建数据库模式.Benjamin Eberlei是Doctrine 2的核心贡献者.

另请参阅B. Eberlei使用PHPUnit进行数据库测试的终极指南