2017-12-15 3 views
3

Wie kann ich eine HTTP-Anfrage verspotten, um so einige Tests über die Daten oder STH zu schreiben?PHPUnit: Wie kann ich eine HTTP-Anfrage verspotten?

public function serve_request() { 

    // Check request method 
    if ($_SERVER['REQUEST_METHOD'] !== 'GET') { 

     $this->send_response(405, 'Invalid method: ' . $_SERVER['REQUEST_METHOD']); 
     die; 

    } 

Zum Beispiel, wie soll ich die Anfrage-Methode testen? Ich bin seit einiger Zeit verwirrt. Ich habe auch versucht, die HTTP-Anfrage zu locken, aber ich konnte nicht auf die Daten zugreifen. Alle Vorschläge sind willkommen.

Antwort

0

In Ihrem Test können Sie $ _SERVER direkt ändern, um unterschiedliche Werte zu haben. Dann könntest du die verschiedenen Werte testen. So könnten Sie in Ihrem Test vor der Ausführung $_SERVER['REQUEST_METHOD'] = 'foo' tun.

Jedoch, weil Sie die in dieser Funktion haben, wird dies die Ausführung von phpunit anhalten. Um diesen Teil der Funktion zu testen, müsste der Befehl die an einen anderen Ort verschoben werden. Da dieser Teil des Codes mit phpunit nicht testbar ist.

+0

Ich weiß, ich kann $ _SERVER Werte direkt ändern, aber die Sache ist, ich werde nicht in der Lage sein, die db-Daten zu testen. Vielleicht müsste ich die HTTP-Anfrage überspielen. –

+0

Welche db Daten? Dafür würden Sie die Datenbankverbindung mocken, damit Sie sie kontrollieren können. Aber das ist eine andere Frage. – Schleis

+0

Ich sehe, ich werde dies in meinem Kopf behalten. –

Verwandte Themen