Я создаю автономный пакет Symfony 4.4 и мне нужно его протестировать!
Я создал AppKernelTest, расширяющий ядро, и зарегистрировал все свои пакеты:
class ServicesBundleTestingKernel extends Kernel
{
/**
* @inheritDoc
*/
public function registerBundles()
{
return [
new FrameworkBundle(),
new MonologBundle(),
new DoctrineBundle(),
new DoctrineMigrationsBundle(),
new MyServicesBundle(), // My custom bundle
];
}
/**
* @inheritDoc
*/
public function registerContainerConfiguration(LoaderInterface $loader)
{
}
}
В моем комплекте есть служба, для которой требуется Doctrine Entity Manager, вот моя служба. xml (где я объявляю все службы для моего пакета)
<service id="ServicesBundle\Service\RequestHandler" class="ServicesBundle\Service\RequestHandler" public="false" >
<argument key="$logger" type="service" id="monolog.logger"/>
<argument key="$em" type="service" id="doctrine.orm.entity_manager"/>
</service>
<service id="services_request_handler" alias="ServicesBundle\Service\RequestHandler" public="true" />
Мой тестовый класс:
class DependencyTest extends WebTestCase
{
//private $container;
public function testServiceWiring()
{
self::bootKernel();
}
}
Я настроил свой .env.test для использования моего собственного класса ядра для тестов, но при запуске теста я получил эту ошибку:
1) ServicesBundle \ Tests \ DependencyTest :: testServiceWiring Symfony \ Component \ DependencyInjection \ Exception \ ServiceNotFoundException: служба "services_request_handler" зависит от несуществующей службы "doctrine .orm.entity_manager".
Для тестов, приведенных ниже, я удалил свой Bundle из метода registerBundle ().
Я пробую команду: php bin/console debug:container doctrine.orm.entity_manager
и получим: "Служба не найдена"
Я также пробовал чтобы увидеть все услуги doctrine в моей компании ntainer, когда приложение запущено, и у меня есть только две службы:
Я не знаю, почему Doctrine Bundle зарегистрирован неправильно.