Установленный Composer Ecomdev_PhpUnit пропускает тесты из-за отсутствия vfsstream

14

Я работаю с установкой Enterprise Edition 1.13.1 (хотя Community Edition будет иметь ту же проблему), и мы устанавливаем зависимости через composer, где они доступны. Я установил расширение Ивана Ecomdev_PhpUnit через composer, который купил все обычные зависимости phpunit. Я также скопировал phpunit.xml.dist из vendor / ivanchepurnyi / ecomdev_phpunit в корневой каталог моих проектов.

Когда я впервые запустил свои модульные тесты, я получил следующую ошибку:

The test was skipped, since vfsStream component is not installed. Try install submodules required for this functionality

Впоследствии я добавил composer.jsonи запустил следующую запись require-dev composer update:

"mikey179/vfsStream": ">=1.2.0",

Тем не менее, PHPUnit по-прежнему жалуется, что vfsStream не установлен.

Просматривая репозиторий GitHub для расширения Ecomdev_PHPUnit, видно, что патч был объединен, чтобы позволить автозагрузке libvsfstream при использовании composer . Однако это кажется частичным решением, поскольку автозагрузчик компоновщика нигде не включен, поэтому вызов class_exists все равно не выполняется.

Я могу отредактировать /vendor/ivanchepurnyi/ecomdev_phpunit/app/code/community/EcomDev/PHPUnit/bootstrap.php:41 для включения автозагрузчика композитора во время начальной загрузки (или скопировать bootstrap.php в другое место в моем проекте и отредактировать его) , Это лучшее решение этой проблемы, или в Composer или Ecomdev_PhpUnit есть функция, которая мне не хватает?

Джим Охаллоран
источник

Ответы:

3

Редактирование начальной загрузки является правильным решением, так как начальная загрузка принадлежит вашей собственной области проекта.
То, что предоставляет ecomdev, является только примером / по умолчанию, которое ориентировано на классические некомпозиционные установки.

Flyingmana
источник
Спасибо, это решение, которое я использовал в итоге, просто хотел убедиться, что я ничего не пропустил.
Джим Охаллоран
4

Другим решением этой проблемы является использование автозагрузчика: https://github.com/magento-hackathon/Magento-PSR-0-Autoloader. Это означает, что вам не нужно редактировать файл начальной загрузки.

Пит
источник
+1 Несмотря на то, что я решил отредактировать bootstrap.php, чтобы решить мою проблему, вероятно, это лучшее решение.
Джим Охаллоран
2

Я знаю, что это может быть немного поздно, но просто скачайте vfsStream с GitHub и скопируйте / вставьте содержимое в lib / vfsStream, чтобы решить вашу проблему.

https://github.com/mikey179/vfsStream

Мишель Гокан
источник
Проблема не в том, что vfsStream не установлен (он есть), а в том, что его нельзя загрузить автоматически.
Джим Охаллоран
Но у меня была точно такая же проблема (композитор не помог), я просто сделал решение, которое я написал, и оно решило.
Мишель Гокан
@MichelGokan, ваше решение тоже работает нормально для меня. Спасибо.
DarkCowboy