Тестирование Symfony Пакет: doctrine .orm.entity не найден - PullRequest
0 голосов
/ 30 марта 2020

Я создаю автономный пакет 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, когда приложение запущено, и у меня есть только две службы:

  • [0] cache.adapter. doctrine

  • [1] Doctrine \ Common \ Annotations \ Reader

Я не знаю, почему Doctrine Bundle зарегистрирован неправильно.

...