Как получить EntityManager внутри веб-тестов в Symfony2 - PullRequest
19 голосов
/ 19 апреля 2011

Мне было интересно, как я могу получить менеджер сущностей внутри Экземпляр WebTestCase.

например. чтобы посмотреть, была ли сущность действительно создана в БД во время теста.

Есть идеи на этот счет?

Ответы [ 4 ]

30 голосов
/ 20 апреля 2011

Вы можете извлечь DIC (Контейнер внедрения зависимостей) через Ядро, которое является защищенным членом WebTestCase.

Вы можете сделать это изнутри вашего WebTestCase:

$em = $this->kernel->getContainer()->get('doctrine.orm.entity_manager');

Обновление

Из вашего собственного комментария есть даже ярлык для этого (так как у вас все равно будет клиент):

$client = $this->getClient();
$container = $client->getContainer();

Как упоминается в документах .

6 голосов
/ 04 декабря 2014

Если у вас есть client, вы можете получить от него Entity Manager :

$em = $client->getContainer()->get('doctrine.orm.entity_manager');

Не используйте `getEntityManager, он не рекомендуется с Symfony 2.1.

наслаждайся:)

1 голос
/ 05 марта 2019

Все изменилось, и я хотел бы добавить обновление, действительное для Symfony 4.

Если вам нужен доступ к службам в ваших тестах, вам все равно нужно сначала получить контейнер. Это можно сделать так:

$container = self::$container;

Теперь вы можете получить услугу, в этом примере менеджер сущностей :

$this->em = $container->get('doctrine.orm.entity_manager');

Я использую $this, предполагая, что оператор записан в методе setUp и необходим для других методов тестирования.

Соответствующий раздел официальной документации Symfony.

0 голосов
/ 21 сентября 2016
$this->container->get('doctrine.orm.entity_manager');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...