ergebnis/factory-girl-definition

此包已被废弃,不再维护。作者建议使用 ergebnis/factory-bot 包。

为 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 查找定义,将定义注册到 fixture 工厂,并提供一个 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

好奇我在构建什么?

📬 订阅我的列表,我会偶尔发送电子邮件通知你我在做什么。