Dependency injection 如何在Symfony2中获取webtestcases内部的EntityManager
我想知道如何在一个 WebTestCase实例 e、 g.查看在测试运行期间是否真的在DB中创建了实体 有什么想法吗?您可以通过内核检索DIC(依赖项注入容器),它是WebTestCase的受保护成员 您可以在WebTestCase中执行此操作:Dependency injection 如何在Symfony2中获取webtestcases内部的EntityManager,dependency-injection,symfony,Dependency Injection,Symfony,我想知道如何在一个 WebTestCase实例 e、 g.查看在测试运行期间是否真的在DB中创建了实体 有什么想法吗?您可以通过内核检索DIC(依赖项注入容器),它是WebTestCase的受保护成员 您可以在WebTestCase中执行此操作: $em = $this->kernel->getContainer()->get('doctrine.orm.entity_manager'); 更新 根据您自己的评论,甚至还有一个快捷方式(因为您将拥有一个客户端): 原样。如果您
$em = $this->kernel->getContainer()->get('doctrine.orm.entity_manager');
更新
根据您自己的评论,甚至还有一个快捷方式(因为您将拥有一个客户端):
原样。如果您有
客户机
,您可以从中获取实体管理器:
不要使用`getEntityManager,因为Symfony 2.1不推荐使用它
享受:)事情已经改变,我想添加一个对Symfony 4有效的更新 如果您需要在测试中访问服务,您仍然需要首先获取容器。可以这样做:
$container = self::$container;
现在您可以获得一项服务,在本例中为实体管理器:
我使用$this
假设语句是在设置
方法中编写的,并且在其他测试方法中需要
有关Symfony的官方文档。谢谢。昨天意识到,这一点现在已经被记录在案:啊,太好了,甚至还有一条捷径。:)WebTestCase中没有容器
$em = $client->getContainer()->get('doctrine.orm.entity_manager');
$this->container->get('doctrine.orm.entity_manager');
$container = self::$container;
$this->em = $container->get('doctrine.orm.entity_manager');