Я использую PhpUnit/DbUnit
для создания набора из 5-10 записей приборов.Я использую sqlite в памяти.
Я успешно могу использовать Doctrine\DBAL\Connection
для доступа к нему, поэтому я могу использовать такие методы, как ->insert( $tableName, $data );
для своих тестов.
Теперь я хочу использоватьДоктрина EntityManager
, чтобы я мог создать сущность и вызвать ->persist()
.
В модульном тестировании я издевался над EntityManager
и утверждал, что ожидание вызова будет продолжаться.
Но дляФункциональное тестирование Я хочу проверить конечный результат, записанный в БД, даже пойти дальше и повторно использовать результат записи.
Поэтому мне нужно создать настоящий EntityManager, но потребляющий соединение DbUnit.
Я видел, что создание нового EntityManager
требует 3 аргументов, но создатель все еще защищен:
/**
* Creates a new EntityManager that operates on the given database connection
* and uses the given Configuration and EventManager implementations.
*
* @param \Doctrine\DBAL\Connection $conn
* @param \Doctrine\ORM\Configuration $config
* @param \Doctrine\Common\EventManager $eventManager
*/
protected function __construct(Connection $conn, Configuration $config, EventManager $eventManager)
{
[...]
Я не знаю, должен ли я создать подкласс,или, может быть, использовать уже созданный в подклассе EntityManager или как мне действовать.
Итак, вопрос:
Как я могу настроить реальное Doctrine\ORM\EntityManager
в PhpUnit/DbUnit
тестовом классе, используя низкий уровень Doctrine\Dbal\Connection
что уже связано с DbUnit
соединением?
Примечание:Я нахожусь в проекте symfony3, поэтому файлы сопоставления находятся в ожидаемых местах Symfony.