Provides an interface for, and an easy way to find and register entity definitions for league/factory-muffin
, inspired by ergebnis/factory-girl-definition
.
Run
$ composer require --dev ergebnis/factory-muffin-definition
Implement the Definition
interface and use the instance of League\FactoryMuffin\FactoryMuffin
that is passed in into accept()
to define entities:
<?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([
// ...
]);
}
}
๐ก Any number of entities can be defined within a definition. However, it's probably a good idea to create a definition for each entity.
Lazily instantiate an instance of League\FactoryMuffin\FactoryMuffin
and use Definitions
to find definitions and register them with the factory:
<?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;
}
}
Please have a look at CONTRIBUTING.md
.
Please have a look at CODE_OF_CONDUCT.md
.
This package is licensed using the MIT License.
Please have a look at LICENSE.md
.
๐ฌ Subscribe to my list, and I will occasionally send you an email to let you know what I am working on.