https://github.com/webgriffe/in-memory-repository
An "in-memory" implementation of Doctrine repository
https://github.com/webgriffe/in-memory-repository
Last synced: 5 months ago
JSON representation
An "in-memory" implementation of Doctrine repository
- Host: GitHub
- URL: https://github.com/webgriffe/in-memory-repository
- Owner: webgriffe
- License: mit
- Created: 2022-01-29T16:34:16.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2025-12-23T09:37:35.000Z (6 months ago)
- Last Synced: 2025-12-24T23:28:47.850Z (6 months ago)
- Language: PHP
- Size: 28.3 KB
- Stars: 0
- Watchers: 5
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Doctrine "in-memory" Repository
This library is an "in-memory" implementation of the `Doctrine\Persistence\ObjectRepository` interface.
It can be used to unit test components which depends on Doctrine repositories without involving a real database.
## Installation
Add it to your "dev" dependencies:
```bash
composer require --dev webgriffe/in-memory-repository
```
## Usage
Let's assume that you're building a movie management application and you have a Doctrine's `MovieRepository` (which implements a `MovieRepositoryInterface`) that's used by your services to fetch movies from database in your application.
Now let's say that to unit test those services which depends on this `MovieRepository` you want to create an "in-memory" implmentation of the `MovieRepositoryInterface`.
With this small library you can easily do this:
```php
*/
final class MovieRepository extends ObjectRepository implements MovieRepositoryInterface
{
}
```
And that's it! You have an "in-memory" implementation of the `MovieRepositoryInterface`.
You can use it in your tests as follows:
```php
$movieRepository = new \MyMovieApp\Tests\Repository\InMemory\MovieRepository();
$movieRepository->objectCollection->add(new Movie('Rambo'));
$movieRepository->objectCollection->add(new Movie('Top Gun'));
$this->assertCount(2, $movieRepository->findAll());
$this->assertEquals(new Movie('Rambo'), $movieRepository->findOneBy(['title' => 'Rambo']));
```
## License
This plugin is under the MIT license. See the complete license in the LICENSE file.
## Credits
Developed by [Webgriffe®](https://www.webgriffe.com).