Dependency injection 如何在Symfony2中获取webtestcases内部的EntityManager

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'); 更新 根据您自己的评论,甚至还有一个快捷方式(因为您将拥有一个客户端): 原样。如果您

我想知道如何在一个 WebTestCase实例

e、 g.查看在测试运行期间是否真的在DB中创建了实体

有什么想法吗?

您可以通过内核检索DIC(依赖项注入容器),它是WebTestCase的受保护成员

您可以在WebTestCase中执行此操作:

$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');