临时Doctrine2灯具用于测试phpunit

tam*_*mir 9 testing phpunit fixtures symfony doctrine-orm

我有一个基于Symfony2 + Doctrine2构建的应用程序,我想为(使用phpunit)创建一些测试.

例如,如果我想针对数据库中的记录测试唯一的验证器,我想创建一个我可以使用的记录,但是在测试之后我不再需要它了.那么有没有办法创建临时(或虚拟)灯具或我必须手动创建和删除它们?

Flo*_*ian 20

您可以使用Doctrine DataFixture并将此代码放在单元测试类的setUp方法中:

$loader = new Doctrine\Common\DataFixtures\Loader;
$loader->loadFromDirectory('/path/to/MyDataFixtures');
$purger = new Doctrine\Common\DataFixtures\Purger\ORMPurger($em);
$executor = new Doctrine\Common\DataFixtures\Executor\ORMExecutor($em, $purger);
$executor->execute($loader->getFixtures());
Run Code Online (Sandbox Code Playgroud)

您可以参考文档来了解如何创建DataFixture类.

以下是如何执行此操作的一个很好的示例:Symfony 2 + Doctrine 2 + PHPUnit 3.5:关闭异常的序列化

PS:我假设你在这个例子中有一个工作$ em(EntityManager).

  • 或者,$ loader = new\Symfony\Bridge\Doctrine\DataFixtures\ContainerAwareLoader(static :: $ kernel-> getContainer()); 如果需要使用实现ContainerAwareInterface的fixture.还有,谢谢!刚用过这个答案. (2认同)