我正在我的 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 <> stream x��TKk�@����s��<�%0�8� ��1�PzR����K�~��"j 9��ݙ�of��4 _���c(��C���������@|�c�T�3%��������p�-�.
这只是为了说明,实际输出要长得多。
这是一个普遍问题,其他 MIME 类型也会发生。
是否有可能抑制输出?
最佳答案
与其他情况一样,当您此时此刻不需要输出时,您可以使用 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());
更新:避免出现错误消息,例如
Test code or tested code did not (only) close its own output buffers
使用ob_end_clean()
而不是ob_clean()
。
关于php - 测试文件下载,但禁止在命令行上输出文件内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54839199/