如何在Symfony2中的webtestcases中获取EntityManager

sto*_*fln 19 dependency-injection symfony

我想知道如何在WebTestCase实例中检索实体管理器.

例如,查看在testrun期间是否真的在DB中创建了一个实体.

有什么想法吗?

igo*_*orw 30

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

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

$em = $this->kernel->getContainer()->get('doctrine.orm.entity_manager');
Run Code Online (Sandbox Code Playgroud)

更新

从你自己的评论中,甚至还有一个快捷方式(因为你无论如何都会有一个客户端):

$client = $this->getClient();
$container = $client->getContainer();
Run Code Online (Sandbox Code Playgroud)

正如文档中提到的那样.


小智 6

如果您有客户,可以从中获得实体经理

$em = $client->getContainer()->get('doctrine.orm.entity_manager');
Run Code Online (Sandbox Code Playgroud)

从Symfony 2.1开始不推荐使用getEntityManager.

请享用 :)