bentools / doctrine-static
Doctrine Static - Mock managers and repositories in simple arrays, without any database.
dev-master / 1.0.x-dev
2018-04-10 14:38 UTC
Requires
- php: >=7.1
- doctrine/orm: ~2.5
Requires (Dev)
- phpunit/phpunit: ^7.1
- satooshi/php-coveralls: ^2.0
- squizlabs/php_codesniffer: ^3.2
- symfony/var-dumper: ~4.0
This package is auto-updated.
Last update: 2024-11-06 09:50:34 UTC
README
This library is intended to be used for mocking ObjectManagers and Repositories behaviors in your unit tests.
It is of course not intended to be used as a real persistence system.
Main features
- Create different
ObjectManager
and store them in aManagerRegistry
- Use
$objectManager->persist()
,$objectManager->remove()
and$objectManager->flush()
as usual (objects are stored in a temporary array before you callflush()
) - Use repository methods like
find()
,findBy()
,findOneBy()
andfindAll()
Unsupported features
- Everything UnitofWork-related
- Class metadata
merge
,detach
,refresh
, ...
Example usage
namespace App\Entity; class Foo { private $id; private $name; /** * Foo constructor. * @param $id * @param $name */ public function __construct($id, $name) { $this->id = $id; $this->name = $name; } /** * @return mixed */ public function getId() { return $this->id; } /** * @return mixed */ public function getName() { return $this->name; } }
use App\Entity\Foo; use BenTools\DoctrineStatic\ManagerRegistry; use BenTools\DoctrineStatic\ObjectManager; use BenTools\DoctrineStatic\ObjectRepository; require_once __DIR__ . '/vendor/autoload.php'; $foo = new Foo(2, 'foo'); $doctrine = new ManagerRegistry([ 'default' => new ObjectManager([ new ObjectRepository(Foo::class) ] ), ]); $em = $doctrine->getManager(); $em->persist($foo); $em->flush(); // Retrieve object by id $em->find(Foo::class, 2); // Retrieve objects with name matching "foo" $em->getRepository(Foo::class)->findBy(['name' => 'foo']);
Installation
composer require --dev benools/doctrine-static:1.0.x-dev
Tests
./vendor/bin/phpunit
License
MIT