我的DoctrineFixturesBundle已安装,我可以通过命令行加载夹具但是,如何从功能测试中加载夹具?
你可以在你的测试qazxsw poi方法中加载灯具,你可以在qazxsw poi中看到。
您可以使用问题中的代码,但需要附加setUp()
to this question命令,以避免fixtures-bundle的确认。
更好的解决方案是查看--append
,这使得使用数据夹具更容易。
如果你使用symfony的doctrine:fixtures:load
,实际上有一种非常简单的方法来加载你的灯具。你的夹具必须实现LiipFunctionalTestBundle;因此,您可以直接在测试的WebTestCase
方法中调用它的FixtureInterface
方法。你只需要将load()
传递给setUp()
方法,该方法可以从symfony容器中获取:
EntityManager
如果您想首先清除以前的测试数据表,我想提供一种稍微简洁的方法,例如:如果你在phpunit中运行你的测试。
load()
这允许加载夹具(您可以将更多内容推入添加夹具方法),并在加载之前清除表格。另请注意,MongoDB使用MongoDBPurger和MongoDBExecutor具有相同的选项。希望它可以帮助某人
正如已经提到的那样,建议使用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()
。