Как использовать PhpUnit / DbUnit с настоящим Doctrine EntityManager для функционального тестирования - PullRequest
0 голосов
/ 18 октября 2018

Я использую 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.

...