Ich versuche einige Grundeinheitstests für meine Laravel-Anwendung mit PHPUnit auszuführen.Laravel: PHPUnit verursacht 404s für alles
Alle HTTP-Anfragen geben jedoch einen 404 nicht gefundenen HTTP-Statuscode zurück, so dass wir bei der ersten Hürde versagen.
Nach dem Internet-Schleppen, ich habe Informationen zu finden, wie diese zu beheben, aber bisher keiner von ihnen tatsächlich funktionieren:
- Überprüfung ich richtig die benannte Route verwiesen haben.
- Überprüfen, ob diese Route über eine Controller-Methode verfügt.
- Überprüfen, dass es im Browser funktioniert.
- Ich habe dafür gesorgt, dass meine Anwendung URL korrekt in den richtigen Stellen gesetzt:
TestCase::$baseUrl
,Config->app->url
... Sein Satzhttp://localhost/myappfolder
- Ich habe verschiedene Methoden versucht, aus meiner Einheit Testmethoden eine HTTP-Antwort zu erhalten Objekt. Soweit ergeben sich alle eine 404:
$this->route()
,$this->action()
,$this->call()
. - Ich habe versucht, alle Referenzen zu Route Protection Middleware von meinen Controllern entfernen. Ich glaube, dass es beim Ausführen von Komponententests deaktiviert ist, aber ich habe dies getan, während ich mein sprichwörtliches Haar herausziehe, um dieses Problem zu diagnostizieren. Kein Effekt.
- Die Roots-Datei meiner Anwendung hat mehrere PHP
require
s, die kleinere Routendateien enthält. Taylor Otwell hat zuvor gesagt, dass eine solche Routes-Datei, dierequire_once
enthält, diese 404-Fehler verursachen kann. Er schlägt vor, zurequire
zu wechseln. Einige Entwickler berichten, dass dies für sie behebt, aber meine waren geraderequire
die ganze Zeit. Ich habe auch versucht, Routen in die Hauptrouten-Datei zurück zu verschieben, aber das hat auch nicht funktioniert.
Untersuchungen wurden in der Regel ungewöhnlich:
- Wenn ich die
route()
Methode innerhalbIlluminate\Foundation\Testing\Concerns
bearbeiten aus der URL drucken es erzeugt, ist es in der Tat perfekt geformt:http://localhost/myprojectfolder/route-url-text
. Der Besuch dieser Seite im Browser funktioniert einwandfrei. Der Besuch mit cURL funktioniert auch. Das Ausführen von$this->call()
für die URL, die generiert wurde, und dann Ausführen von PHPUnit zeigt das 404 wieder. Also ist es nur PHPUnit etwas seltsam zu tun.
Hier ist der Code, den ich in dem Unit-Test-Skript:
public function testThis()
{
$response = $this->route('GET', 'myRouteName', [
'myParam' => 5
]);
dd($response->status()); // 404 - always!
}
Es ist wie es ist etwas in und wirft Schritt ist ausdrücklich ein 404 ... schätzen würde wirklich, wenn jemand beleuchten könnte darauf.
Das wird seltsam erscheinen, aber was passiert, wenn Sie direkt danach eine andere Route anrufen? Hast du 200? Ich hatte ein ähnliches Problem in der Vergangenheit, aber fand nie eine Lösung – Aron
Das scheint seltsam ... aber ich schätze den Vorschlag. Ich habe ein paar Anfragen hintereinander gestellt. Immer noch die 404. – kohloth
Ah Entschuldigung, ich kann nicht mehr helfen. Es kann sich lohnen, dieses Thema auch im Laracasts-Forum zu veröffentlichen – Aron