如何在Symfony2的webtestcase中获取EntityManager

问题描述

|| 我想知道如何在内部检索实体管理器 WebTestCase实例。 例如查看在测试运行期间是否真的在数据库中创建了实体。 有什么想法吗?

解决方法

您可以通过内核(WebTestCase的受保护成员)检索DIC(依赖项注入容器)。 您可以在WebTestCase中执行此操作:
$em = $this->kernel->getContainer()->get(\'doctrine.orm.entity_manager\');
更新资料 根据您自己的评论,甚至还有一个捷径(因为无论如何您都会有一个客户):
$client = $this->getClient();
$container = $client->getContainer();
正如在文档中提到的。,如果您有
client
,则可以从中获取实体管理器:
$em = $client->getContainer()->get(\'doctrine.orm.entity_manager\');
不要使用`getEntityManager,自Symfony 2.1起已弃用。 请享用 :),事情已经改变,我想添加一个对Symfony 4有效的更新。 如果您需要在测试中访问服务,则仍然需要先获取容器。可以这样完成:
$container = self::$container;
现在您可以获得服务,在此示例中为实体管理器:
$this->em = $container->get(\'doctrine.orm.entity_manager\');
我使用
$this
,假设语句是用ѭ7other方法编写的,而在其他测试方法中是必需的。 Symfony官方文档的相关部分。,
$this->container->get(\'doctrine.orm.entity_manager\');