如何在PHPUnit测试中使用输出缓冲?

use*_*653 3 php testing phpunit unit-testing

我正在使用PHPUnit来测试下载文件的功能。我想测试是否下载了正确的文件,所以我的想法是检查函数的输出。我正在尝试使用输出缓冲:

ob_start();
$viewer->downloadById($fileId);
$output = ob_get_flush();
$this->assertEquals($expectedFileContents,$output);
Run Code Online (Sandbox Code Playgroud)

测试应该通过/失败,这很好。我的问题是输出缓冲区的内容也被打印到控制台。我该如何隐藏呢?

Hav*_*ock 5

使用ob_get_clean()代替ob_get_flush()。前者将删除缓冲区而不打印它并返回其内容。后者将执行相同的操作并打印缓冲区的内容。