我想知道如何在 WebTestCase 实例中检索实体管理器。
例如,查看在测试运行期间是否真的在 DB 中创建了实体。
有什么想法吗?
我想知道如何在 WebTestCase 实例中检索实体管理器。
例如,查看在测试运行期间是否真的在 DB 中创建了实体。
有什么想法吗?
您可以通过内核检索 DIC(依赖注入容器),内核是 WebTestCase 的受保护成员。
您可以在 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
假设语句写在setUp
方法中并且在其他测试方法中需要。
Symfony 官方文档的相关部分。
$this->container->get('doctrine.orm.entity_manager');