Sto scrivendo test funzionali con Symfony2.Come recuperare una risposta in streaming (ad esempio, scaricare un file) con il client di prova Symfony
ho un controller che chiama una funzione getImage()
che emana un file immagine come segue:
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;
}
Nei test funzionale, ho una richiesta al contenuto con la Symfony test client come segue:
$client = static::createClient();
$client->request('GET', $url);
$content = $client->getResponse()->getContent();
Il problema è che $content
è vuoto, suppongo perché la risposta viene generata non appena le intestazioni HTTP vengono ricevute dal client, senza attendere la consegna di un flusso di dati.
C'è un modo per intercettare il contenuto della risposta in streaming mentre si utilizza ancora $client->request()
(o anche qualche altra funzione) per inviare la richiesta al server?
Per me arrivare a questo lavoro ho dovuto mettere ob_start() prima di effettuare la richiesta. –