localheinz/factory-muffin-definition

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

为league/factory-muffin提供接口,以及轻松查找和注册实体定义的简单方法。

2.0.0 2019-12-10 21:48 UTC

This package is auto-updated.

Last update: 2020-08-28 18:47:11 UTC


README

Integrate Prune Release Renew

Code Coverage Type Coverage

Latest Stable Version Total Downloads

league/factory-muffin 提供接口,以及轻松查找和注册实体定义的简单方法,灵感来源于 ergebnis/factory-girl-definition

安装

运行

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

使用方法

创建定义

实现 Definition 接口,并将传入的 League\FactoryMuffin\FactoryMuffin 实例传递给 accept() 以定义实体

<?php

namespace Foo\Bar\Test\Fixture\Entity;

use Ergebnis\FactoryMuffin\Definition\Definition;
use Foo\Bar\Entity;
use League\FactoryMuffin\FactoryMuffin;

final class UserDefinition implements Definition
{
    public function accept(FactoryMuffin $factoryMuffin): void
    {
        $factoryMuffin->define(Entity\User::class)->setDefinitions([
            // ...
        ]);
    }
}

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

注册定义

延迟实例化 League\FactoryMuffin\FactoryMuffin 的实例,并使用 Definitions 查找定义,并将其注册到工厂中

<?php

namespace Foo\Bar\Test\Integration;

use Ergebnis\FactoryMuffin\Definition\Definitions;
use League\FactoryMuffin\FactoryMuffin;
use League\FactoryMuffin\Stores;
use PHPUnit\Framework;

abstract class AbstractIntegrationTestCase extends Framework\TestCase
{
    final protected function factoryMuffin(): FactoryMuffin
    {
        static $factoryMuffin = null;

        if (null === $factoryMuffin) {
            $factoryMuffin = new FactoryMuffin(new Stores\ModelStore('save'));

            Definitions::in(__DIR__ . '/../Fixture')->registerWith($factoryMuffin);
        }

        return $factoryMuffin;
    }
}

贡献

请查看 CONTRIBUTING.md

行为准则

请查看 CODE_OF_CONDUCT.md

许可证

此包使用 MIT 许可证授权。

请查看 LICENSE.md

好奇我在做什么?

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