Symfony2 で機能テストを書いています。
getImage()
次のように、画像ファイルをストリーミングする関数を呼び出すコントローラーがあります。
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;
}
機能テストでは、次のようにSymfony テスト クライアントでコンテンツをリクエストしようとします。
$client = static::createClient();
$client->request('GET', $url);
$content = $client->getResponse()->getContent();
問題は、それ$content
が空であることです。データ ストリームが配信されるのを待たずに、クライアントが HTTP ヘッダーを受信するとすぐに応答が生成されるためだと思います。
$client->request()
リクエストをサーバーに送信するために(または他の機能を)使用しながら、ストリーミングされたレスポンスのコンテンツをキャッチする方法はありますか?