测试文件下载,但禁止在命令行上输出文件内容

时间:2019-02-23 07:17:25

标签: php symfony phpunit

我正在测试在我的Symfony应用程序中下载文件的路径,除命令行上难看的PDF内容输出外,其他一切都正常。

例如,我要检查某些用户角色是否具有下载PDF文件的访问权限:

$this->client->request('GET', '/media/download/1');
$this->assertTrue($this->client->getResponse()->isSuccessful());

点击测试的这一部分时,PDF的内容会在命令行上打印出来,如下所示:

  

31/31(100%)%PDF-1.4%äüöß2 0 obj <>流x��TKk�@����s��<�%0�8。                           ��1�PzR����K�〜��''j9����������4               _�c(��C���������@ |�c�T�3%��������p�-..

这只是为了说明,实际输出要长得多。

这是一个普遍的问题,其他MIME类型也会发生。

是否有可能抑制输出?

1 个答案:

答案 0 :(得分:3)

与在其他情况下此时不需要输出的情况一样,可以使用ob_函数对其进行缓冲,例如:

// start buffering
ob_start();
$this->client->request('GET', '/media/download/1');
// and as you really don't care about output - just clean it
ob_clean();
// use 
// $contents = ob_get_clean();
// if you still need output
$this->assertTrue($this->client->getResponse()->isSuccessful());

更新:避免出现类似错误消息

  

测试代码或测试代码没有(仅)关闭自己的输出缓冲区

使用ob_end_clean()代替ob_clean()