我正在尝试将我的Symfony 3.4应用程序迁移到Symfony 4.1。
测试不起作用,因为服务默认为私有(这是一个好消息)。
根据这篇文章:https://symfony.com/blog/new-in-symfony-4-1-simpler-service-testing,我仍然面临着私有服务的问题:
Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException:当容器被编译时,“my.service”服务或别名已被删除或内联。您应该将其公开,或停止直接使用容器并改用依赖注入。
在以下编译器传递中,我的私有服务未在$definitions
中找到:vendor/symfony/framework-bundle/DependencyInjection/Compiler/TestServiceContainerRealRefPass.php
问题应该是什么?
更新
这里是定义:
<service id="my.service"
class="My\Bundle\GreatService">
<argument type="service" id="doctrine.orm.entity_manager" />
</service>
更新(再次)
这里是单元测试
<?php
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
class MyServiceTest extends KernelTestCase
{
protected $myService;
public function setUp()
{
self::bootKernel();
$this->myService = self::$container->get('my.service');
}
//...
}