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

标签 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 <> 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/

相关文章:

php - 为什么需要 TLS/SSL?

symfony - 如何使用 Webpack 和 Symfony 观看 twig 文件?

symfony - 创建没有默认 Controller 和路由的包

php - 在 Symfony 2 中用户切换(模拟)后重定向

php - 单元测试和对象继承

php - 使用 PHP 从 MySQL 日期时间转换为另一种格式

php - 如何将 php 数组构造为 json

php - MySQL - 在数据库复杂性中查找表

phpunit require_once() 错误

performance - PHPunit 在 Homestead 上启动需要很长时间,因此导致测试缓慢