首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Symfony 2中从功能测试中加载fixture

如何在Symfony 2中从功能测试中加载fixture
EN

Stack Overflow用户
提问于 2013-06-14 00:02:37
回答 3查看 23.7K关注 0票数 29

我的DoctrineFixturesBundle已经安装好了,我可以通过命令行加载fixture,但是,如何从功能测试加载fixture呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-14 00:05:17

您可以像在this question中看到的那样,在测试的setUp()方法中加载fixture。

您可以使用问题中的代码,但需要将--append附加到doctrine:fixtures:load命令,以避免由fixtures-bundle进行确认。

更好的解决方案是看一看LiipFunctionalTestBundle,它使数据固定的使用变得更容易。

票数 18
EN

Stack Overflow用户

发布于 2013-12-05 20:55:39

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

代码语言:javascript
复制
public function setUp() {
    $client = static::createClient();
    $container = $client->getContainer();
    $doctrine = $container->get('doctrine');
    $entityManager = $doctrine->getManager();

    $fixture = new YourFixture();
    $fixture->load($entityManager);
}
票数 24
EN

Stack Overflow用户

发布于 2014-02-17 22:59:01

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

代码语言:javascript
复制
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();
}

这允许装入fixture (您可以将更多的装入到add fixture方法中),并在装入表之前清除它们。还请注意,使用MongoDBPurger和MongoDBExecutor时,MongoDB具有相同的选项。希望这能帮助到某个人

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17091772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档