首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Symfony 3原理夹具的多个文件

Symfony 3原理夹具的多个文件
EN

Stack Overflow用户
提问于 2018-04-09 09:29:28
回答 1查看 1.1K关注 0票数 0

我正在使用bundle Doctrine:Fixtures加载一个bbdd抛出Entitys的示例,而且由于我在这个项目中单独工作,所以没关系。

但是现在,我的项目中有一个同事,我们想知道是否可以为加载设置一个不同的文件。

我有自己的git中关联的夹具文件,我不希望他修改这个文件。我想有一个特殊的文件,只为他,将允许他修改任何时候,他想要这个文件的夹具。所以,任何人都可以把他自己的记录放在监狱里。

如果多个文件是不可能的,还可以用另一种方式吗?

http://symfony.com/doc/current/bundles/DoctrineFixturesBundle/index.html

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-09 09:48:07

可以使用--fixture标志:php app/console doctrine:fixtures:load --fixture=/src/BundleName/DataFixtures/ORM/Fixture.php加载特定的夹具文件

或者,您可以添加一个Fixtures.php.dist文件和一些工作示例,然后使用.gitignore忽略Fixtures.php

然后将一个命令添加到构建中(或在composer脚本中),并/或在签出项目时将此.dist文件复制到Fixtures.php中。

如果要执行BDD,另一种方法是创建一个Helper类,可以在Context中使用该类创建和持久化测试中需要的实体。这将允许您只创建测试所需的详细信息。它真正需要的是EntityManager,所以它可能比预先定义所有的固定装置更简单。

您可以使用费克生成实际实体。

代码语言:javascript
复制
class AbstractFixtureHelper implements ContainerAwareInterface
{
    /**
     * @var Generator
     */
    protected $faker;

    /**
     * @var ContainerInterface
     */
    protected $container;

    public function __construct()
    {
        $this->faker = Factory::create();
    }

    /**
     * @param ContainerInterface|null $container
     * @return void
     */
    public function setContainer(ContainerInterface $container = null)
    {
        $this->container = $container;
    }

    /**
     * @return EntityManager
     */
    protected function getEntityManager()
    {
        return $this->container->get('doctrine.orm.entity_manager');
    }
}

然后,对于不同的实体-在本例中,用户:

代码语言:javascript
复制
class UserFixtureHelper extends AbstractFixtureHelper
{
    public function createUser()
    {
        $user = new User();
        $user->setEmail($this->faker->email);
        $this->getEntityManager()->persist($user);
        $this->getEntityManager()->flush();

        return $user;
    }
}

然后,在上下文中注入UserFixtureHelper并在场景步骤中直接创建。

代码语言:javascript
复制
/**
* @Given there is a User who XXX
*/
public function thereIsAUser()
{
    $user = $this->userFixtureHelper->createUser();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49729698

复制
相关文章

相似问题

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