Właśnie miałem to zrobić, aby przesłonić now()
pomocnika więc mogę kontrolować pozorna czas przeprowadzania testów. I po regular advice tworzenia app/Http/helpers.php
a następnie dodanie go do bootstrap/autoload.php
tak:
require __DIR__.'/../app/Http/helpers.php'; // added
require __DIR__.'/../vendor/autoload.php';
To zazwyczaj działa, ponieważ jak mówi Marty, wszyscy pomocnicy są zdefiniowane tylko wtedy, gdy nie jest istniejąca funkcja o tej nazwie. Tak więc powyższe dwa wiersze ładują twoich niestandardowych pomocników, a następnie wykonaj automatyczne ładowanie wszystkich dostawców, które obejmuje pomocników Laravel, a twoja już zdefiniowana funkcja ma pierwszeństwo.
Niestety, wydaje się, że autoload.php
nie jest używany podczas testowania z Behat, którego używam. Potrzebowałem więc alternatywnego rozwiązania. Krótko mówiąc, jedynym prostym sposobem na zapewnienie automatycznego ładowania plików przed plikami dostawców za pomocą pakietu https://github.com/funkjedi/composer-include-files.Aby zacytować jego readme:
W przeszłości wystarczyło zmodyfikować bootstrap/autoload.php
, aby dołączyć pomocników. Jednak nowe wersje PHPUnit zawierają Composer Autoloader przed wykonaniem pliku bootstrap PHPUnit. W związku z tym ta metoda zastępowania helperów nie jest już możliwa, ponieważ spowoduje błąd krytyczny po dołączeniu pliku bootstrap.
Więc zainstalowany ten pakiet za pomocą composer require funkjedi/composer-include-files
a następnie dodaje do tego composer.json
:
"extra": {
"include_files": [
"app/Http/helpers.php"
]
},
Po dokonaniu rejestracji, należy uruchomić composer dump-autoload
regenerować pliki automatycznego uruchamiania. Teraz przesłonięcia działają zarówno podczas zwykłej pracy aplikacji, jak i podczas testów!
Jeśli potrzebujesz dodatkowej pomocy przy pisaniu aktualnego makra, muszę wiedzieć, co dokładnie ma robić ... – lukasgeiter
Wiem, że można to zrobić w ten sposób, ale chciałbym się dowiedzieć, czy ktoś ma rozwiązanie zamiast zmieniać każdą metodę lub tworzyć inną. Laravel powinien być flexibel dla tego rodzaju rzeczy. – guidsen
OK. Może ktoś inny ma rozwiązanie ... – lukasgeiter