Der von Composer installierte Befehl Ecomdev_PhpUnit überspringt Tests, weil vfsstream fehlt

14

Ich arbeite mit einer Enterprise Edition 1.13.1-Installation (obwohl Community Edition das gleiche Problem hätte) und wir installieren Abhängigkeiten über Composer, sofern diese verfügbar sind. Ich habe Ivans Ecomdev_PhpUnit-Erweiterung über einen Composer installiert, der alle normalen phpunit-Abhängigkeiten einkauft. Ich habe auch phpunit.xml.dist vom Hersteller / ivanchepurnyi / ecomdev_phpunit in das Stammverzeichnis meines Projekts kopiert.

Als ich meine Unit-Tests zum ersten Mal durchführte, erhielt ich die folgende Fehlermeldung:

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

Anschließend habe ich den folgenden Eintrag für require-dev hinzugefügt composer.jsonund ausgeführt composer update:

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

PHPUnit beschwert sich jedoch weiterhin darüber, dass vfsStream nicht installiert ist.

Wenn Sie das GitHub-Repository nach der Erweiterung Ecomdev_PHPUnit durchsuchen, sieht es so aus, als ob ein Patch zusammengeführt wurde, damit libvsfstream automatisch geladen werden kann, wenn Composer verwendet wird . Dies scheint jedoch eine Teillösung zu sein, da der Composer-Autoloader nirgendwo enthalten ist und der Aufruf von class_exists weiterhin fehlschlägt.

Ich kann /vendor/ivanchepurnyi/ecomdev_phpunit/app/code/community/EcomDev/PHPUnit/bootstrap.php:41 bearbeiten, um den Composer-Autoloader während des Bootstraps einzuschließen (oder die Datei bootstrap.php in mein Projekt kopieren und bearbeiten) . Ist dies die beste Lösung für dieses Problem, oder gibt es eine fehlende Funktion in Composer oder Ecomdev_PhpUnit?

Jim OHalloran
quelle

Antworten:

3

Das Bearbeiten des Bootstraps ist hier die richtige Lösung, da der Bootstrap zu Ihrem eigenen Projektumfang gehört.
Das von ecomdev gelieferte ist nur ein Beispiel / Standard, das sich an den klassischen Nicht-Komponisten-Installationen orientiert.

Flyingmana
quelle
Danke, das ist die Lösung, die ich letztendlich benutzt habe, um sicherzugehen, dass mir nichts entgeht.
Jim OHalloran
4

Eine andere Möglichkeit, dies zu beheben, ist die Verwendung des Autoloaders: https://github.com/magento-hackathon/Magento-PSR-0-Autoloader Dies bedeutet, dass Sie die Bootstrap-Datei nicht bearbeiten müssen.

Pete
quelle
+1 Obwohl ich bootstrap.php bearbeitet habe, um mein Problem zu lösen, ist dies wahrscheinlich die bessere Lösung.
Jim OHalloran
2

Ich weiß, dass dies ein bisschen spät sein kann, aber einfach vfsStream von GitHub herunterladen und den Inhalt nach lib / vfsStream kopieren / einfügen kann Ihr Problem lösen.

https://github.com/mikey179/vfsStream

Michel Gokan
quelle
Das Problem ist nicht, dass vfsStream nicht installiert ist, sondern dass es nicht automatisch geladen werden kann.
Jim OHalloran
Aber ich hatte genau das gleiche Problem (Komponist hat nicht geholfen) und habe einfach die Lösung, die ich geschrieben habe, und es gelöst.
Michel Gokan
@MichelGokan, deine Lösung hat auch bei mir gut funktioniert. Danke.
DarkCowboy