我想知道如何在一个内部检索实体管理器 WebTestCase实例。
e.g。查看在testrun期间是否真的在DB中创建了一个实体。
有关于此的任何想法吗?
答案 0 :(得分:30)
您可以通过内核检索DIC(依赖注入容器),内核是WebTestCase的受保护成员。
您可以在WebTestCase中执行此操作:
$em = $this->kernel->getContainer()->get('doctrine.orm.entity_manager');
<强>更新强>
根据您自己的评论,甚至还有一个快捷方式(因为您无论如何都会有客户):
$client = $this->getClient();
$container = $client->getContainer();
答案 1 :(得分:6)
如果您拥有client
,则可以从中获取实体经理:
$em = $client->getContainer()->get('doctrine.orm.entity_manager');
不要使用`getEntityManager,自Symfony 2.1以来不推荐使用它。
享受:)
答案 2 :(得分:1)
情况已更改,我想添加一个对Symfony 4有效的更新。
如果您需要在测试中访问服务,则仍然需要先获取容器。可以这样完成:
$container = self::$container;
现在您可以获得服务,在此示例中为实体管理器:
$this->em = $container->get('doctrine.orm.entity_manager');
我使用$this
,假设该语句是用setUp
方法编写的,而其他测试方法则需要该语句。
Symfony官方文档中的相关section。
答案 3 :(得分:0)
$this->container->get('doctrine.orm.entity_manager');