Как настроить код для функционального тестирования с Symfony2?

Я использую этот функциональный.suite.yml:

class_name: FunctionalTester
modules:
    enabled:
        - Symfony2
        - \Helper\Functional

Я создаю и запускаю тесты и получаю:

Trying to Log in and see result (LoginCept)... PHP Fatal error:  Undefined class constant 'UNKNOWN' in phar:///usr/local/bin/codecept/vendor/phpunit/phpunit/src/Framework/TestResult.php on line 592
PHP Stack trace:
PHP   1. {main}() /usr/local/bin/codecept:0
PHP   2. require_once() /usr/local/bin/codecept:7
PHP   3. Symfony\Component\Console\Application->run() phar:///usr/local/bin/codecept/codecept:34
PHP   4. Symfony\Component\Console\Application->doRun() phar:///usr/local/bin/codecept/vendor/symfony/console/Application.php:123
PHP   5. Symfony\Component\Console\Application->doRunCommand() phar:///usr/local/bin/codecept/vendor/symfony/console/Application.php:192
PHP   6. Symfony\Component\Console\Command\Command->run() phar:///usr/local/bin/codecept/vendor/symfony/console/Application.php:844
PHP   7. Codeception\Command\Run->execute() phar:///usr/local/bin/codecept/vendor/symfony/console/Command/Command.php:259
PHP   8. Codeception\Command\Run->runSuites() phar:///usr/local/bin/codecept/src/Codeception/Command/Run.php:189
PHP   9. Codeception\Codecept->run() phar:///usr/local/bin/codecept/src/Codeception/Command/Run.php:262
PHP  10. Codeception\Codecept->runSuite() phar:///usr/local/bin/codecept/src/Codeception/Codecept.php:172
PHP  11. Codeception\SuiteManager->run() phar:///usr/local/bin/codecept/src/Codeception/Codecept.php:203
PHP  12. Codeception\PHPUnit\Runner->doEnhancedRun() phar:///usr/local/bin/codecept/src/Codeception/SuiteManager.php:153
PHP  13. PHPUnit_Framework_TestSuite->run() phar:///usr/local/bin/codecept/src/Codeception/PHPUnit/Runner.php:89
PHP  14. PHPUnit_Framework_TestCase->run() phar:///usr/local/bin/codecept/vendor/phpunit/phpunit/src/Framework/TestSuite.php:747
PHP  15. PHPUnit_Framework_TestResult->run() phar:///usr/local/bin/codecept/vendor/phpunit/phpunit/src/Framework/TestCase.php:724



FATAL ERROR. TESTS NOT FINISHED.
Undefined class constant 'UNKNOWN'

Я понятия не имею, как заставить это работать. Какие-либо предложения?


person Sebastian Tkaczyk    schedule 22.03.2016    source источник


Ответы (1)


Похоже на обычный конфликт версий между phar-файлом Codeception и библиотеками, установленными Composer.

Файл Codeception связан с PHPUnit 4.8.23, но у вас установлен PHPUnit ‹4.7.0 в каталоге поставщика, и автозагрузчику удалось загрузить класс PHPUnit_Util_Test из каталога поставщика.

Удалите PHPUnit от поставщика или вместо этого установите Codeception с Composer.

Ссылка на соответствующее изменение в PHPUnit:

person Naktibalda    schedule 22.03.2016
comment
Да, Codeception phar автоматически использует версию поставщика, если она была найдена. Для меня странно, но использование только phar или vendor работает. - person Sebastian Tkaczyk; 26.08.2017
comment
@SebastianTkaczyk Я реализовал эту функцию в версии 2.2.10 в феврале 2017 года. Это вызывает у вас какие-либо проблемы? - person Naktibalda; 29.08.2017
comment
Для меня это не интуитивно. Для меня очевидно, что при обновлении какой-либо версии кода (например, теста для PHPUnit) я получаю от поставщика свою старую версию. И для целей тестирования/миграции я загружаю новую версию в формате .phar, чтобы запускать свой код, используя ее. Насколько я помню, я переносил свои старые тесты кодирования и хочу проверить, как они работают в новой версии. - person Sebastian Tkaczyk; 29.08.2017
comment
По крайней мере, это работает сейчас. Я рекомендую избегать использования phar и вместо этого использовать локальную установку композитора. Файл Phar или глобальная установка композитора могут иметь другую версию компонентов Symfony и вызывать непредвиденные ошибки. - person Naktibalda; 29.08.2017