如何在 PHPUnit 测试中使用输出缓冲?
How to use output buffering inside PHPUnit test?
我正在使用 PHPUnit 测试下载文件的函数。我想测试是否下载了正确的文件,所以我的想法是检查函数的输出。我正在尝试使用输出缓冲:
ob_start();
$viewer->downloadById($fileId);
$output = ob_get_flush();
$this->assertEquals($expectedFileContents,$output);
测试 passes/fails 应该的时候,这很好。我的问题是输出缓冲区的内容也打印到控制台。我该如何隐藏它?
使用 ob_get_clean()
而不是 ob_get_flush()
。前者将删除缓冲区而不打印它和 return 它的内容。后者将执行相同的操作 并打印 缓冲区的内容。
我正在使用 PHPUnit 测试下载文件的函数。我想测试是否下载了正确的文件,所以我的想法是检查函数的输出。我正在尝试使用输出缓冲:
ob_start();
$viewer->downloadById($fileId);
$output = ob_get_flush();
$this->assertEquals($expectedFileContents,$output);
测试 passes/fails 应该的时候,这很好。我的问题是输出缓冲区的内容也打印到控制台。我该如何隐藏它?
使用 ob_get_clean()
而不是 ob_get_flush()
。前者将删除缓冲区而不打印它和 return 它的内容。后者将执行相同的操作 并打印 缓冲区的内容。