Próbuję uruchomić kilka podstawowych testów jednostkowych dla mojej aplikacji Laravel z PHPUnit.Laravel: PHPUnit powoduje 404 dla wszystkiego
Jednak wszystkie żądania HTTP zwracają kod statusu HTTP nie odnaleziony, więc nie udaje nam się to z pierwszej przeszkody.
Po trałowania w internecie, znalazłem informację o tym, jak temu zaradzić, ale do tej pory żaden z nich faktycznie działa:
- Sprawdzanie Mam odwołuje trasę nazwaną poprawnie.
- Sprawdzanie, czy ta trasa ma metodę kontrolera.
- Sprawdzanie, czy działa w przeglądarce.
- mam zapewnione, że moja aplikacja url jest ustawiona prawidłowo we wszystkich właściwych miejscach:
TestCase::$baseUrl
,Config->app->url
... Jej zestaw dohttp://localhost/myappfolder
- Próbowałem różnych metod od wewnątrz moich metod badań jednostkowych, aby uzyskać odpowiedź HTTP obiekt. Do tej pory wszystkie wyniki są w 404: ,
$this->action()
, . - Próbowałem usunąć wszystkie odwołania do oprogramowania zabezpieczającego trasy z moich kontrolerów. Uważam, że jest wyłączony podczas testów jednostkowych, ale zrobiłem to, ponieważ wyciągam moje przysłowiowe włosy, próbując zdiagnozować ten problem. Bez efektu.
- Plik główny mojej aplikacji ma kilka PHP
require
s, które zawierają mniejsze pliki trasy. Taylor Otwell powiedział wcześniej, że taki plik tras, ale zawierającyrequire_once
, może spowodować te 404 błędy. Sugeruje zmianę narequire
. Niektórzy programiści zgłaszają, że to naprawia je dla nich, ale moje zostały właśnierequire
cały czas. Próbowałem również przenieść trasy z powrotem do głównego pliku tras, ale to też nie zadziałało.
Badania były zazwyczaj nietypowe:
- Gdybym edytować metodę
route()
ciąguIlluminate\Foundation\Testing\Concerns
wydrukować URL to generuje, jest w rzeczywistości doskonale uformowane:http://localhost/myprojectfolder/route-url-text
. Odwiedzenie tej strony w przeglądarce działa poprawnie. Zwiedzanie go przy pomocy cURL również działa. Uruchamianie$this->call()
na wygenerowanym adresie URL, a następnie uruchomienie PHPUnit ponownie pokazuje 404. Więc to tylko PHPUnit robi coś dziwnego.
Oto kod używam w scenariuszu testowym jednostka:
public function testThis()
{
$response = $this->route('GET', 'myRouteName', [
'myParam' => 5
]);
dd($response->status()); // 404 - always!
}
jej jak coś jest nasilenie i wyraźnie rzuca 404 ... Czy naprawdę wdzięczny jeśli ktoś mógłby rzucić światło na to.
To może wydawać się dziwne, ale co się stanie, jeśli później zadzwonisz na inną trasę? Czy masz 200? Miałem podobny problem w przeszłości, ale nigdy nie znalazłem rozwiązania. – Aron
To wydaje się dziwne ... ale doceniam sugestię. Złożyłem kilka wniosków kolejno. Nadal dostaję 404. – kohloth
Ach, przepraszam, nie mogę być bardziej pomocny. Warto również opublikować ten problem na forum laracast – Aron