Doctrine Static - Mock managers and repositories in simple arrays, without any database.

dev-master / 1.0.x-dev 2018-04-10 14:38 UTC

This package is auto-updated.

Last update: 2020-01-05 23:14:10 UTC


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 a ManagerRegistry
  • Use $objectManager->persist(), $objectManager->remove() and $objectManager->flush() as usual (objects are stored in a temporary array before you call flush())
  • Use repository methods like find(), findBy(), findOneBy() and findAll()

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();

// Retrieve object by id
$em->find(Foo::class, 2);

// Retrieve objects with name matching "foo"
$em->getRepository(Foo::class)->findBy(['name' => 'foo']);


composer require --dev benools/doctrine-static:1.0.x-dev