Piszę testy funkcjonalne z Symfony2.Jak odzyskać odpowiedź strumieniową (np. Pobrać plik) za pomocą klienta testowego Symfony
Mam kontroler, który wywołuje getImage()
funkcję, która strumieni plik obrazu w następujący sposób:
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;
}
W testów funkcjonalnych, staram się zwrócić treść z Symfony test client następująco:
$client = static::createClient();
$client->request('GET', $url);
$content = $client->getResponse()->getContent();
Problem polega na tym, że $content
jest pusty, ponieważ odpowiedź jest generowana, gdy tylko nagłówki HTTP są odbierane przez klienta, bez oczekiwania na dostarczenie strumienia danych.
Czy istnieje sposób na przechwytywanie zawartości przesyłanej odpowiedzi przy jednoczesnym użyciu funkcji $client->request()
(lub nawet innej funkcji) w celu wysłania żądania do serwera?
Dla mnie to do pracy musiałem umieścić ob_start() przed złożeniem wniosku. –