2012-02-08 51 views
9

我有一个应用程序构建在Symfony2 + Doctrine2上,我想为(使用phpunit)创建一些测试。Temporary Doctrine2 fixtures for testing with phpunit

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

回答

20

您可以使用Doctrine DataFixture,并把这个代码在单元测试类的设置方法

$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()); 

您可以参考文档,了解如何创建DataFixture类。

这里是如何做到这一点的好例子:Symfony 2 + Doctrine 2 + PHPUnit 3.5: Serialization of closure exception

PS:我假设你已经在这个例子中工作$ EM(EntityManager的)。

+2

或者 $ loader = new \ Symfony \ Bridge \ Doctrine \ DataFixtures \ ContainerAwareLoader(static :: $ kernel-> getContainer()); 如果您需要使用实现ContainerAwareInterface的灯具。 另外,谢谢!刚刚使用了这个答案。 – skqr 2013-04-28 22:24:36

+0

PRMPurger真的需要$ em来启动它吗? – Tjorriemorrie 2014-02-04 12:45:02

+0

从src目录加载所有灯具的最佳方法是什么? – 2015-10-02 17:02:02