在Symfony 3.4中,我使用此方法在测试类中获取教义实体:
测试类(摘要):
$kernel = self::bootKernel();
$em = $kernel->getContainer()
->get('doctrine')
->getManager();
已弃用。
我试图将实体管理器注入我的测试中,如下所示:
services.yml
Tests\AppBundle\NewUserTest:
public: true
autowire: true
calls:
- [ setEntityManager, ['@doctrine.orm.entity_manager']]
测试类(代码段,名称空间=“ Tests \ AppBundle”):
/**
* @param EntityManager $em
*/
public function setEntityManager(EntityManager $em)
{
self::$em = $em;
}
我无法使用构造函数注入(因为WebTestCases需要一堆我无法访问的构造函数参数)
有人可以帮我这个忙吗?我一直在各地寻找解决方案。有一些类似的问题,但是在测试环境中没有。
谢谢:)
答案 0 :(得分:0)
我认为您可以为此创建客户端。客户可以提供您所需的所有服务。
namespace App\Tests\Controller;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class WebTest extends WebTestCase
{
private $client;
public function setUp()
{
$this->client = static::createClient();
}
public function getLoggedInClient()
{
$session = $this->client->getContainer()->get('session');
}
}