将学说注入测试-Symfony 4.1

时间:2018-07-13 10:51:48

标签: php symfony testing

在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需要一堆我无法访问的构造函数参数)

有人可以帮我这个忙吗?我一直在各地寻找解决方案。有一些类似的问题,但是在测试环境中没有。

谢谢:)

1 个答案:

答案 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');
    }

}