localheinz/factory-girl-definition

此包已被弃用且不再维护。作者建议使用 ergebnis/factory-girl-definition 包。

为breerly/factory-girl-php提供接口,以及轻松查找和注册实体定义的方法。

2.0.1 2019-12-14 08:48 UTC

README

Integrate Prune Release Renew

Code Coverage Type Coverage

Latest Stable Version Total Downloads

breerly/factory-girl-php 提供接口,以及轻松查找和注册实体定义的方法。

安装

运行

$ composer require --dev ergebnis/factory-girl-definition

使用

创建定义

实现以下之一

  • Ergebnis\FactoryGirl\Definition\Definition
  • Ergebnis\FactoryGirl\Definition\FakerAwareDefinition

接口,并使用传递给accept()FactoryGirl\Provider\Doctrine\FixtureFactory实例来定义实体

<?php

namespace Foo\Bar\Test\Fixture\Entity;

use Ergebnis\FactoryGirl\Definition\Definition;
use FactoryGirl\Provider\Doctrine\FixtureFactory;
use Foo\Bar\Entity;

final class UserDefinition implements Definition
{
    public function accept(FixtureFactory $fixtureFactory): void
    {
        $fixtureFactory->defineEntity(Entity\User::class, [
            // ...
        ]);
    }
}

💡 定义中可以定义任意数量的实体。但是,为每个实体创建一个定义可能是个好主意。

注册定义

懒实例化一个FactoryGirl\Provider\Doctrine\FixtureFactory实例,并使用Definitions查找定义,将定义注册到固定工厂,并可选地提供一个Faker\Generator实例的定义

<?php

namespace Foo\Bar\Test\Integration;

use Doctrine\ORM;
use Ergebnis\FactoryGirl\Definition\Definitions;
use FactoryGirl\Provider\Doctrine\FixtureFactory;
use Faker\Generator;
use PHPUnit\Framework;

abstract class AbstractIntegrationTestCase extends Framework\TestCase
{
    /**
     * @var FixtureFactory
     */
    private $fixtureFactory;

    final protected function entityManager(): ORM\EntityManager
    {
        // ...
    }

    final protected function faker(): Generator
    {
        // ...
    }

    final protected function fixtureFactory(): FixtureFactory
    {
        if (null === $this->fixtureFactory) {
            $fixtureFactory = new FixtureFactory($this->entityManager());
            $fixtureFactory->persistOnGet(true);

            Definitions::in(__DIR__ . '/../Fixture')
                ->registerWith($fixtureFactory)
                ->provideWith($this->faker());

            $this->fixtureFactory = $fixtureFactory;
        }

        return $this->fixtureFactory;
    }
}

贡献

请查看 CONTRIBUTING.md

行为准则

请查看 CODE_OF_CONDUCT.md

此包使用MIT许可证授权。

许可证

此包使用MIT许可证授权。

请查看 LICENSE.md

好奇我在做什么?

📬 订阅我的列表,我偶尔会发送邮件告诉你我在做什么。