codeception: установка предопределенного сервиса "доктрина" устарела с Symfony 3.3 и больше не будет поддерживаться в Symfony 4.0


Мой проект-это проект Symfony 3.3.9 с доктриной ORM. Я использую codeception 2.3.6 с модулем Doctrine2, я следую этой статье: http://codeception.com/docs/modules/Doctrine2

Моя конфигурация кодирования такова:

#tests/functional.suite.yml
actor: FunctionalTester
modules:
    enabled:
        - HelperFunctional
        - PhpBrowser:
            url: http://localhost 
        - Symfony 
        - Doctrine2:
            depends: Symfony
            cleanup: true

Когда я запускаю набор тестов с помощью этой команды

./vendor/bin/codecept run functional

Тесты проходят очень хорошо с успехом, но устаревшие сообщения выбрасываются:

Установка предопределенного сервиса "доктрина" устарела с Symfony 3.3 и не будет поддерживается больше в Symfony 4.0

Когда я удаляю конфигурацию модуля Doctrine2 из функционала.комплект.yml

#tests/functional.suite.yml
actor: FunctionalTester
modules:
    enabled:
        - HelperFunctional
        - PhpBrowser:
            url: http://localhost 
        - Symfony 

Я должен удалить вызовы $I->grabEntityFromRepository() в моих классах тестов, и устаревшие исчезают

1 3

1 ответ:

У меня такая же проблема с моими проектами. Выпуск открыт на github https://github.com/Codeception/Codeception/issues/4318

Проблема заключается не в доктринальном модуле кодек-ции, а в символьном модуле кодек-ции.

Метод Codeception\Module\Symfony:: _getEntityManager () хочу сохранить 3 службы доктрины, доктрины.ОЗР.default_entity_manager, доктрина.дбал.backend_connection

public function _getEntityManager()
{
    if ($this->kernel === null) {
        $this->fail('Symfony2 platform module is not loaded');
    }
    if (!isset($this->permanentServices[$this->config['em_service']])) {
        // try to persist configured EM
        $this->persistService($this->config['em_service'], true);

        if ($this->_getContainer()->has('doctrine')) {
            $this->persistService('doctrine', true);
        }
        if ($this->_getContainer()->has('doctrine.orm.default_entity_manager')) {
            $this->persistService('doctrine.orm.default_entity_manager', true);
        }
        if ($this->_getContainer()->has('doctrine.dbal.backend_connection')) {
            $this->persistService('doctrine.dbal.backend_connection', true);
        }
    }
    return $this->permanentServices[$this->config['em_service']];
}

Ошибка запускается из Codeception\Lib\Connector\Symfony:: rebootKernel ():

public function rebootKernel()
{
    foreach ($this->persistentServices as $serviceName => $service) {
        $this->container->set($serviceName, $service);
    }  
}

Вы можете прокомментировать выпуск github, он не закрыт прямо сейчас.

Edit: вы можете определить error_level в вашем конфигурационном файле и добавить ~E_USER_DEPRECATED:

#tests/functional.suite.yml
actor: FunctionalTester
modules:
    enabled:
        - \Helper\Functional
        - PhpBrowser:
            url: http://localhost 
        - Symfony 
        - Doctrine2:
            depends: Symfony
            cleanup: true
error_level: "E_ALL & ~E_STRICT & ~E_DEPRECATED & ~E_USER_DEPRECATED"

Http://codeception.com/docs/04-FunctionalTests#Error-Reporting