0

你能帮助我如何在 symfony2 中测试下载文件吗?有我的源代码:

控制器.php

public function downloadAction($picture_id) 
{

    $fichier= $this->uploadDir.$picture_id; 
    if (($fichier != "") && (file_exists($fichier))) {
        $content = file_get_contents($fichier);

        $response = new Response();
        $response->headers->set('Content-Type', 'application/octet-stream');
        $response->headers->set('Content-Disposition', 'attachment;filename="'.$picture_id);

        $response->setContent($content);

        return $response;
    }
    else return new Response(json_encode(array("response_code" => "ko")));  


}

控制器测试.php

public function testdownload()
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_VERBOSE, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible;)");
    curl_setopt($ch, CURLOPT_URL, "path/img.jpg");
    $response = curl_exec($ch);
}

问题是我如何测试下载是否成功,或者我可以使用哪个断言来进行功能测试?

4

1 回答 1

1

5年前问过,但也许有人会发现这个有用(功能测试):

$client = static::createClient();
$client->request('GET', '/path/img.jpg');

$this->assertEquals(true, $client->getResponse()->isOk());
$binaryData = $client->getInternalResponse()->getContent()

问题是$client->getResponse()->getContent()当有二进制数据时返回空字符串。

使用 Symfony 4.2 测试。

于 2019-03-29T18:52:01.553 回答