如何在Symfony 2中加载功能测试中的灯具

问题描述 投票:25回答:4

我的DoctrineFixturesBundle已安装,我可以通过命令行加载夹具但是,如何从功能测试中加载夹具?

symfony doctrine functional-testing fixture
4个回答
18
投票

你可以在你的测试qazxsw poi方法中加载灯具,你可以在qazxsw poi中看到。

您可以使用问题中的代码,但需要附加setUp()to this question命令,以避免fixtures-bundle的确认。

更好的解决方案是查看--append,这使得使用数据夹具更容易。


20
投票

如果你使用symfony的doctrine:fixtures:load,实际上有一种非常简单的方法来加载你的灯具。你的夹具必须实现LiipFunctionalTestBundle;因此,您可以直接在测试的WebTestCase方法中调用它的FixtureInterface方法。你只需要将load()传递给setUp()方法,该方法可以从symfony容器中获取:

EntityManager

7
投票

如果您想首先清除以前的测试数据表,我想提供一种稍微简洁的方法,例如:如果你在phpunit中运行你的测试。

load()

这允许加载夹具(您可以将更多内容推入添加夹具方法),并在加载之前清除表格。另请注意,MongoDB使用MongoDBPurger和MongoDBExecutor具有相同的选项。希望它可以帮助某人


2
投票

正如已经提到的那样,建议使用LiipFunctionalTestBundle。然后你想从public function setUp() { $client = static::createClient(); $container = $client->getContainer(); $doctrine = $container->get('doctrine'); $entityManager = $doctrine->getManager(); $fixture = new YourFixture(); $fixture->load($entityManager); } 扩展你的use Doctrine\Common\DataFixtures\Purger\ORMPurger; use Doctrine\Common\DataFixtures\Executor\ORMExecutor; use Doctrine\Common\DataFixtures\Loader; use Namespace\FakeBundle\DataFixtures\ORM\YourFixtures; public function setUp() { static::$kernel = static::createKernel(); static::$kernel->boot(); $this->em = static::$kernel->getContainer() ->get('doctrine') ->getManager() ; $loader = new Loader(); $loader->addFixture(new YourFixtures); $purger = new ORMPurger($this->em); $executor = new ORMExecutor($this->em, $purger); $executor->execute($loader->getFixtures()); parent::setUp(); } 。这将允许调用WebTestCase,它将一系列灯具作为参数。

Liip\FunctionalTestBundle\Test\WebTestCase

有关详细信息,我写了一个简短的$this->loadFixtures()

© www.soinside.com 2019 - 2024. All rights reserved.