symfony 您请求的服务“text.service_container”不存在,您的意思是:“服务_容器”?

kd3sttzy  于 2023-02-09  发布在  其他
关注(0)|答案(1)|浏览(103)

PHPUnit 7.5.15由塞巴斯蒂安Bergmann和贡献者编写。
Symfony\组件\依赖注入\异常\未找到服务异常:您请求的服务“text.service_container”不存在。您的意思是:“服务容器”?/opt/项目/后端/供应商/symfony/symfony/src/Symfony/组件/依赖关系注入/容器。php:277 /opt/项目/后端/供应商/symfony/symfony/src/symfony/组件/依赖关系注入/容器。php:225 /opt/项目/后端/测试/功能/内核感知测试。php:49 /opt/项目/后端/测试/功能/飞行任务管理/分配员工到任务测试。php:47

public function setUp(): void
    {
        global $kernel;

        $this->kernel = TestKernel::get();
        $kernel = $this->kernel;

        $container = $this->kernel->getContainer();

        if ($container === null)
            throw new \InvalidArgumentException('Container can not be null.');

        $this->container = $container->get('test.service_container');
        
//        $this->container = $container->get('service_container');
        
        /** @var Registry $doctrine */
        $doctrine = $this->container->get('doctrine');
        /** @var \Doctrine\ORM\EntityManager $manager */
        $manager = $doctrine->getManager();

        $this->entityManager = $manager;
        $this->entityManager->beginTransaction();

        if (!$this->container->initialized(WorkDistributionTransport::class)) {
            $this->container->set(WorkDistributionTransport::class, new InMemoryTransport());
        }
        if (!$this->container->initialized(Configuration::class)) {
            $this->container->set(Configuration::class, new TestConfiguration());
        }

        parent::setUp();
    }

它在第行失败

$this->container = $container->get('test.service_container');

Symfony是4.1,但看起来还没有完成更新。我不记得我们决定它还没有完成更新从早期版本。
不清楚是不是更新没有完成的问题。看起来4.0没有这样的服务,所以这就是原因。但是如何让它出现在这里呢?
或者我可以用

$this->container = $container->get('service_container');

就像早期的版本一样?只是什么是更快的方式?
我只是试着用

$this->container = $container->get('service_container');

但我会得到
原则\DBAL\DBAL异常:建立连接以确定平台版本时发生异常。可以通过设置“server_version”配置值来避免此问题
但是我已经在config_test.yml中设置了版本,所以不清楚哪种方式更快修复。

doctrine:
    dbal:
        server_version: 5.7
        driver:   pdo_mysql
        host:     db_test
        port:     null
        dbname:   project
        user:     project
        password: project

如果我加载service_container,它可能不会加载测试配置,这就是为什么我得到这个server_version错误。所以需要设法使它加载测试配置。

xxe27gdn

xxe27gdn1#

发现:我在AppKernel中有硬编码的开发环境。可能这就是为什么我得到这个错误。硬编码测试环境修复。将是好的不知何故,使它没有硬编码,但它仍然比什么都没有:

public function __construct($environment, $debug)
    {
//        $environment ='dev';
        $environment ='test';
        $debug= true;

        parent::__construct($environment, $debug);
        date_default_timezone_set('UTC');
    }

相关问题