【问题标题】:How to use output buffering inside PHPUnit test?如何在 PHPUnit 测试中使用输出缓冲?
【发布时间】:2015-03-18 12:55:57
【问题描述】:

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

ob_start();
$viewer->downloadById($fileId);
$output = ob_get_flush();
$this->assertEquals($expectedFileContents,$output);

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

【问题讨论】:

    标签: php unit-testing testing phpunit


    【解决方案1】:

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

    【讨论】:

    • 谢谢!我刚刚为自己解决了这个问题,然后回到这里发布答案!
    • @user1578653,正在从外部网站下载文件,执行 HTTP 请求吗? (完全与您的问题无关,只是出于好奇)
    • 不,在 $viewer->downloadById() 我正在从 Oracle 数据库(可能是远程的)中检索 BLOB 并打印出内容(在发送标头之后)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    • 2021-12-17
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    相关资源
    最近更新 更多