Kompozytor zainstalował Ecomdev_PhpUnit pomija testy z powodu braku vfsstream

14

Pracuję z instalacją Enterprise Edition 1.13.1 (chociaż wydanie Community Edition miałoby ten sam problem) i instalujemy zależności za pośrednictwem kompozytora tam, gdzie są one dostępne. Zainstalowałem rozszerzenie Ivana Ecomdev_PhpUnit przez kompozytora, który kupił wszystkie normalne zależności phpunit. Skopiowałem również phpunit.xml.dist z vendor / ivanchepurnyi / ecomdev_phpunit do katalogu głównego moich projektów.

Kiedy po raz pierwszy przeprowadziłem testy jednostkowe, otrzymałem następujący błąd:

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

Następnie dodałem następujący wpis wymagany-dev do composer.jsoni uruchamiam composer update:

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

Jednak PHPUnit nadal narzeka, że ​​vfsStream nie jest zainstalowany.

Przeglądając repozytorium GitHub dla rozszerzenia Ecomdev_PHPUnit, wygląda na to, że łatka została scalona, ​​aby umożliwić automatyczne ładowanie libvsfstream, gdy używany jest kompozytor . Wydaje się to jednak częściowym rozwiązaniem, ponieważ autoloader kompozytora nigdzie nie jest zawarty, więc wywołanie class_exists nadal kończy się niepowodzeniem.

Mogę edytować /vendor/ivanchepurnyi/ecomdev_phpunit/app/code/community/EcomDev/PHPUnit/bootstrap.php:41, aby dołączyć autoloader kompozytora podczas ładowania (lub skopiować bootstrap.php w inne miejsce w moim projekcie i edytować to) . Czy to najlepsze rozwiązanie tego problemu, czy też brakuje mi funkcji w Composer lub Ecomdev_PhpUnit?

Jim OHalloran
źródło

Odpowiedzi:

3

edycja bootstrap jest tutaj dobrym rozwiązaniem, ponieważ bootstrap należy do twojego zakresu projektu.
To, co dostarcza ecomdev, to tylko przykład / domyślny, zorientowany na klasyczne instalacje inne niż kompozytor.

Flyingmana
źródło
Dzięki, to rozwiązanie, z którego ostatecznie skorzystałem, chciałem tylko upewnić się, że czegoś nie umknie.
Jim OHalloran
4

Inną poprawką jest użycie autoloadera: https://github.com/magento-hackathon/Magento-PSR-0-Autoloader oznacza to, że nie musisz edytować pliku bootstrap.

Pete
źródło
+1 Chociaż zakończyłem edycję bootstrap.php, aby rozwiązać mój problem, jest to prawdopodobnie lepsze rozwiązanie.
Jim OHalloran
2

Wiem, że może to być trochę za późno, ale po prostu pobierz vfsStream z GitHub i skopiuj / wklej zawartość do lib / vfsStream może rozwiązać Twój problem.

https://github.com/mikey179/vfsStream

Michel Gokan
źródło
Problem nie polega na tym, że vfsStream nie jest zainstalowany (jest), ale na tym, że nie można go automatycznie załadować.
Jim OHalloran
Ale miałem dokładnie ten sam problem (kompozytor nie pomógł), po prostu zrobiłem rozwiązanie, które napisałem i rozwiązałem.
Michel Gokan
@MichelGokan, twoje rozwiązanie również działało dobrze dla mnie. Dzięki.
DarkCowboy