我正在使用bundle Doctrine:Fixtures加载一个bbdd抛出Entitys的示例,而且由于我在这个项目中单独工作,所以没关系。
但是现在,我的项目中有一个同事,我们想知道是否可以为加载设置一个不同的文件。
我有自己的git中关联的夹具文件,我不希望他修改这个文件。我想有一个特殊的文件,只为他,将允许他修改任何时候,他想要这个文件的夹具。所以,任何人都可以把他自己的记录放在监狱里。
如果多个文件是不可能的,还可以用另一种方式吗?
http://symfony.com/doc/current/bundles/DoctrineFixturesBundle/index.html
发布于 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,所以它可能比预先定义所有的固定装置更简单。
您可以使用费克生成实际实体。
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');
}
}然后,对于不同的实体-在本例中,用户:
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并在场景步骤中直接创建。
/**
* @Given there is a User who XXX
*/
public function thereIsAUser()
{
$user = $this->userFixtureHelper->createUser();
}https://stackoverflow.com/questions/49729698
复制相似问题