Проблемы с использованием Symfony2 + PHPUnit

Я закончил свое первое «настоящее» веб-приложение с использованием Symfony2. До сих пор нет модульных тестов — так как проект развивается очень быстро — мне нужно добавить их, чтобы проверять ошибки перед каждым выпуском. (Сейчас все проверяю вручную)

Когда я впервые использую «phpunit -c app /», я получаю следующие сообщения об устаревании:

Остальные уведомления об устаревании (37)

Symfony \ Component \ внедрение зависимости \ Определение :: setFactoryMethod (createNamed)
устарела с версии 2.6 и будет удалена в 3.0. использование
Definition :: setFactory () вместо: 4x
4x в myControllerTest :: testMyAction из MyNamespace \ XYZBundle \ Tests \ Controller

Symfony \ Component \ внедрение зависимости \ Определение :: setFactoryService (form.factory)
устарела с версии 2.6 и будет удалена в 3.0. использование
Definition :: setFactory () вместо: 4x
4x в myControllerTest :: testMyAction из MyNamespace \ XYZBundle \ Tests \ Controller

Опция «шаблон» в файле
«/var/www/myproject/vendor/friendsofsymfony/user-bundle/FOS/UserBundle/Resources/config/routing/security.xml» устарела с версии 2.2 и будет удалена в 3.0. Использовать
опция «путь» в определении маршрута: 3x
3 раза в myControllerTest :: testMyAction из MyNamespace \ XYZBundle \ Tests \ Controller

Функция ветки «form_enctype» устарела. Вместо этого используйте «form_start»
в FOSUserBundle: Профиль: edit_content.html.twig в строке 1: 1x
1x в myControllerTest :: testMyAction из MyNamespace \ XYZBundle \ Tests \ Controller

Использование экземпляра Twig_Function_Method для функции
«vich_uploader_asset» устарела с версии 1.21. использование
Twig_SimpleFunction вместо: 1x
1x в myControllerTest :: testMyAction из MyNamespace \ XYZBundle \ Tests \ Controller

Класс Twig_Function устарел с версии 1.12 и будет
снято в 2.0. Вместо этого используйте Twig_SimpleFunction: 1x
1x в myControllerTest :: testMyAction из MyNamespace \ XYZBundle \ Tests \ Controller

Атрибут «объем» службы
«fos_user.resetting.form.handler.default» в файле
«/var/www/myproject/vendor/friendsofsymfony/user-bundle/FOS/UserBundle/DependencyInjection/../Resources/config/resetting.xml»is устарела с версии 2.8 и будет удалена в 3.0: 1x
1x в myControllerTest :: testMyAction из MyNamespace \ XYZBundle \ Tests \ Controller

Класс Twig_Function_Method устарел с версии 1.12 и
будет удален в 2.0. Вместо этого используйте Twig_SimpleFunction: 1x
1x в myControllerTest :: testMyAction из MyNamespace \ XYZBundle \ Tests \ Controller

Функция ветки «form_enctype» устарела. Вместо этого используйте «form_start»
в FOSUserBundle: Группа: new_content.html.twig в строке 1: 1x
1x в myControllerTest :: testMyAction из MyNamespace \ XYZBundle \ Tests \ Controller

Функция ветки «form_enctype» устарела. Вместо этого используйте «form_start»
в FOSUserBundle: Группа: edit_content.html.twig в строке 1: 1x
1x в myControllerTest :: testMyAction из MyNamespace \ XYZBundle \ Tests \ Controller

Функция ветки «form_enctype» устарела. Вместо этого используйте «form_start»
в FOSUserBundle: Регистрация: register_content.html.twig в строке 1: 1x
1x в myControllerTest :: testMyAction из MyNamespace \ XYZBundle \ Tests \ Controller

Функция ветки «form_enctype» устарела. Вместо этого используйте «form_start»
в FOSUserBundle: ChangePassword: changePassword_content.html.twig в
строка 1: 1x
1x в myControllerTest :: testMyAction из MyNamespace \ XYZBundle \ Tests \ Controller

Требование «_method» для маршрута «fos_user_security_check» в файле
«/var/www/myproject/vendor/friendsofsymfony/user-bundle/FOS/UserBundle/Resources/config/routing/security.xml» устарела с версии 2.2 и будет удалена в 3.0. Использовать
Атрибут «методы» вместо: 1x
1x в myControllerTest :: testMyAction из MyNamespace \ XYZBundle \ Tests \ Controller

Функция ветки «form_enctype» устарела. Вместо этого используйте «form_start»
в FOSUserBundle: Сброс: reset_content.html.twig в строке 1: 1x
1x в myControllerTest :: testMyAction из MyNamespace \ XYZBundle \ Tests \ Controller

Атрибут «factory-service» службы «fos_user.resetting.form» в файле
«/var/www/myproject/vendor/friendsofsymfony/user-bundle/FOS/UserBundle/DependencyInjection/../Resources/config/resetting.xml»is устарела с версии 2.6 и будет удалена в 3.0. Использовать
вместо элемента «фабрика»: 1x
1x в myControllerTest :: testMyAction из MyNamespace \ XYZBundle \ Tests \ Controller

Атрибут «объем» службы
«fos_user.change_password.form.handler.default» в файле
«/var/www/myproject/vendor/friendsofsymfony/user-bundle/FOS/UserBundle/DependencyInjection/../Resources/config/change_password.xml» устарела с версии 2.8 и будет удалена в 3.0: 1x
1x в myControllerTest :: testMyAction из MyNamespace \ XYZBundle \ Tests \ Controller

Атрибут «factory-method» службы «fos_user.profile.form» в
файл
«/var/www/myproject/vendor/friendsofsymfony/user-bundle/FOS/UserBundle/DependencyInjection/../Resources/config/profile.xml»is устарела с версии 2.6 и будет удалена в 3.0. Использовать
вместо элемента «фабрика»: 1x
1x в myControllerTest :: testMyAction из MyNamespace \ XYZBundle \ Tests \ Controller

Атрибут «factory-service» службы «fos_user.profile.form» в
файл
«/var/www/myproject/vendor/friendsofsymfony/user-bundle/FOS/UserBundle/DependencyInjection/../Resources/config/profile.xml»is устарела с версии 2.6 и будет удалена в 3.0. Использовать
вместо элемента «фабрика»: 1x
1x в myControllerTest :: testMyAction из MyNamespace \ XYZBundle \ Tests \ Controller

Symfony \ Component \ внедрение зависимости \ Определение :: setFactoryService (доктрина)
устарела с версии 2.6 и будет удалена в 3.0. использование
Definition :: setFactory () вместо: 1x
1x в myControllerTest :: testMyAction из MyNamespace \ XYZBundle \ Tests \ Controller

Атрибут «factory-service» службы «fos_user.entity_manager» в файле
«/var/www/myproject/vendor/friendsofsymfony/user-bundle/FOS/UserBundle/DependencyInjection/../Resources/config/orm.xml» устарела с версии 2.6 и будет удалена в 3.0. Использовать
вместо элемента «фабрика»: 1x
1x в myControllerTest :: testMyAction из MyNamespace \ XYZBundle \ Tests \ Controller

Symfony \ Component \ внедрение зависимости \ Определение :: setFactoryMethod (getManager)
устарела с версии 2.6 и будет удалена в 3.0. использование
Definition :: setFactory () вместо: 1x
1x в myControllerTest :: testMyAction из MyNamespace \ XYZBundle \ Tests \ Controller

Атрибут «объем» службы
«fos_user.profile.form.handler.default» в файле
«/var/www/myproject/vendor/friendsofsymfony/user-bundle/FOS/UserBundle/DependencyInjection/../Resources/config/profile.xml»is устарела с версии 2.8 и будет удалена в 3.0: 1x
1x в myControllerTest :: testMyAction из MyNamespace \ XYZBundle \ Tests \ Controller

Атрибут «factory-method» службы «fos_user.registration.form» в файле
«/var/www/myproject/vendor/friendsofsymfony/user-bundle/FOS/UserBundle/DependencyInjection/../Resources/config/registration.xml»is устарела с версии 2.6 и будет удалена в 3.0. Использовать
вместо элемента «фабрика»: 1x
1x в myControllerTest :: testMyAction из MyNamespace \ XYZBundle \ Tests \ Controller

Атрибут сервиса «Фабрика-Сервис»
«fos_user.change_password.form» в файле
«/var/www/myproject/vendor/friendsofsymfony/user-bundle/FOS/UserBundle/DependencyInjection/../Resources/config/change_password.xml» устарела с версии 2.6 и будет удалена в 3.0. Использовать
вместо элемента «фабрика»: 1x
1x в myControllerTest :: testMyAction из MyNamespace \ XYZBundle \ Tests \ Controller

Атрибут «factory-method» службы «fos_user.entity_manager» в
файл
«/var/www/myproject/vendor/friendsofsymfony/user-bundle/FOS/UserBundle/DependencyInjection/../Resources/config/orm.xml» устарела с версии 2.6 и будет удалена в 3.0. Использовать
вместо элемента «фабрика»: 1x
1x в myControllerTest :: testMyAction из MyNamespace \ XYZBundle \ Tests \ Controller

Атрибут сервиса фабричного метода
«fos_user.change_password.form» в файле
«/var/www/myproject/vendor/friendsofsymfony/user-bundle/FOS/UserBundle/DependencyInjection/../Resources/config/change_password.xml» устарела с версии 2.6 и будет удалена в 3.0. Использовать
вместо элемента «фабрика»: 1x
1x в myControllerTest :: testMyAction из MyNamespace \ XYZBundle \ Tests \ Controller

Атрибут «объем» службы
«fos_user.registration.form.handler.default» в файле
«/var/www/myproject/vendor/friendsofsymfony/user-bundle/FOS/UserBundle/DependencyInjection/../Resources/config/registration.xml»is устарела с версии 2.8 и будет удалена в 3.0: 1x
1x в myControllerTest :: testMyAction из MyNamespace \ XYZBundle \ Tests \ Controller

Атрибут сервиса «Фабрика-Сервис»
«fos_user.registration.form» в файле
«/var/www/myproject/vendor/friendsofsymfony/user-bundle/FOS/UserBundle/DependencyInjection/../Resources/config/registration.xml»is устарела с версии 2.6 и будет удалена в 3.0. Использовать
вместо элемента «фабрика»: 1x
1x в myControllerTest :: testMyAction из MyNamespace \ XYZBundle \ Tests \ Controller

Атрибут «factory-method» службы «fos_user.resetting.form» в
файл
«/var/www/myproject/vendor/friendsofsymfony/user-bundle/FOS/UserBundle/DependencyInjection/../Resources/config/resetting.xml»is устарела с версии 2.6 и будет удалена в 3.0. Использовать
вместо элемента «фабрика»: 1x
1x в myControllerTest :: testMyAction из MyNamespace \ XYZBundle \ Tests \ Controller

После первого раза (кеш получил сборку) остается только это:

Оставшиеся уведомления об устаревании (320)

Класс «Symfony \ Bundle \ AsseticBundle \ Config \ AsseticResource» является
выполнение проверки ресурса через ResourceInterface :: isFresh (),
который устарел с 2.8 и будет удален в 3.0: 320x
320x в myControllerTest :: testMyAction из MyNamespace \ XYZBundle \ Tests \ Controller

Я искал, как подавить устаревшие предупреждения, поскольку они исходят из зависимостей, а не из моего кода. Я нашел это решение:

<php>
<ini name="error_reporting" value="-16385" />
</php>

Поэтому я добавил это в свой phpunit.xml, но это не решает проблему. Надеюсь, вы можете помочь мне с этим!

3

Решение

Эта сводка устаревших сообщений показана с помощью моста Symfony PHPunit. У него есть помощник по устареванию, который хранит все уведомления об устаревании, которые были запущены, и показывает их после выполнения всех тестов.

Помощник по устареванию может быть настроен с помощью SYMFONY_DEPRECATIONS_HELPER переменная env. Это может иметь несколько разных значений:

  • weak — указывает, что текущие уведомления об устаревании вызваны сторонними библиотеками. Теперь будет только показывать Remaining deprecation notices (320) и тестовый скрипт вернется 0 (Успех).
  • Любой номер — указывает количество разрешенных уведомлений об устаревании. В вашем случае вы знаете, что 320 уведомлений об устаревании вызываются Assetic, а не вашим кодом. Если вы установите SYMFONY_DEPRECATIONS_HELPER в 320сборка будет проходить до тех пор, пока количество уведомлений не превысит 320. Это очень полезно, так как предупредит вас, как только вы введете новые устаревшие версии.
  • Регулярное выражение — Это остановит сборку, как только будет запущено устаревание, соответствующее регулярному выражению. Это полезно для отладки уведомлений об устаревании.

Задать переменную env можно в командной строке:

# unix
$ SYMFONY_DEPRECATIONS_HELPER=320 phpunit -c app
# windows
> set SYMFONY_DEPRECATIONS_HELPER=320
> phpunit -c app

Или в phpunit.xml(.dist) файл:

<php>
<env name="SYMFONY_DEPRECATIONS_HELPER" value="320"/>
</php>
5

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector