Ich schreibe Funktionstests mit Symfony2.So rufen Sie eine gestreamte Antwort (z. B. eine Datei herunterladen) mit Symfony-Test-Client
Ich habe einen Controller, der eine getImage()
Funktion aufruft, die einen Bilddateiströme wie folgt:
public function getImage($filePath)
$response = new StreamedResponse();
$response->headers->set('Content-Type', 'image/png');
$response->setCallback(function() use ($filePath) {
$bytes = @readfile(filePath);
if ($bytes === false || $bytes <= 0)
throw new NotFoundHttpException();
});
return $response;
}
In funktionellen Tests, ich versuche, den Inhalt mit dem Symfony test client anzufordern, wie folgt:
$client = static::createClient();
$client->request('GET', $url);
$content = $client->getResponse()->getContent();
Das Problem ist, dass $content
leer ist, denke ich, weil die Antwort generiert wird, sobald die HTTP-Header vom Client empfangen werden, ohne auf die Lieferung eines Datenstroms zu warten.
Gibt es eine Möglichkeit, den Inhalt der gestreamten Antwort zu erfassen, während immer noch $client->request()
(oder auch eine andere Funktion) verwendet wird, um die Anfrage an den Server zu senden?
Für mich ist diese Arbeit zu bekommen musste ich() platzieren ob_start, bevor die Anforderung zu machen. –