https://github.com/bpolaszek/doctrine-static
Mock managers and repositories in simple arrays, without any database.
https://github.com/bpolaszek/doctrine-static
Last synced: 10 months ago
JSON representation
Mock managers and repositories in simple arrays, without any database.
- Host: GitHub
- URL: https://github.com/bpolaszek/doctrine-static
- Owner: bpolaszek
- Created: 2018-04-10T13:59:17.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2019-02-05T10:02:12.000Z (almost 7 years ago)
- Last Synced: 2025-01-10T09:59:26.498Z (12 months ago)
- Language: PHP
- Size: 5.86 KB
- Stars: 2
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Doctrine Static
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
```php
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;
}
}
```
```php
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