matthiasnoback/doctrine-orm-test-service-provider
PHPUnit service provider for testing Doctrine ORM with a test service container. Adds a per-test SQLite connection, builds schema automatically from your entity directories, and exposes EntityManager, EventManager, and Connection for fast unit/integration tests.
This library contains a service provider to be used with a service container for PHPUnit tests.
Use the trait Noback\PHPUnitTestServiceContainer\PHPUnit\TestCaseWithEntityManager in your test class. You then
need to implement the getEntityDirectories() which should return an array of the directories containing the entities that should be loaded.
For each test method a connection to an SQLite database will be available. Also the schema for the given entities will be created automatically.
<?php
use PHPUnit\Framework\TestCase;
use Noback\PHPUnitTestServiceContainer\PHPUnit\TestCaseWithEntityManager;
class StorageTest extends TestCase
{
use TestCaseWithEntityManager;
protected function getEntityDirectories(): array
{
return array(
__DIR__ . '/Entity'
);
}
/**
* @test
*/
public function it_persists_an_entity()
{
$user = new User();
$user->setName('Matthias');
$this->getEntityManager()->persist($user);
$this->getEntityManager()->flush();
}
}
Of course, you would usually inject the entity manager into some object which is the subject-under-test.
To register Doctrine event listeners/subscribers, get the EventManager instance by calling
$this->getEventManager(). To get the database Connection object, call $this->getConnection().
How can I help you explore Laravel packages today?