【发布时间】:2014-09-11 18:04:28
【问题描述】:
我有一个 PHP 类,可以输出适当的 image/jpeg 内容标头和 JPG 二进制数据。我想使用 PHPUnit 测试这个类,以确保它输出正确的图像。
我的测试方法是:
public function testNotFound(){
ob_start(NULL,0);
Model\Photo::deliver('blabbityblabbyblab');
$content = ob_get_clean();
$this->assertEquals(50,strlen($content));
}
Model\Photo 将输出一个特定的已知图像。但是,断言永远不会运行,并且我收到 PHPUnit 生成的错误:
Test code or tested code did not (only) close its own output buffers
如何只关闭我在测试方法中启动的缓冲区?
【问题讨论】:
-
可能 Model\Photo::deliver 语句中存在一些错误或警告,导致 PHPUnit 在关闭缓冲区之前中断进程。如果你评论那句话会发生什么?+
-
注释掉该测试会导致断言按预期正确失败。
deliver的唯一输出是输出Content-type标头和 jpg 数据。此处粘贴代码:pastebin.com/eLAY7v6X -
标题不被输出缓冲捕获。仅在尚未发送标头时尝试发送标头,并使用 headers_sent() php 函数进行检查。
-
@gontrollez:添加它只会导致 Deliver() 输出的二进制数据回显到屏幕上。我不确定为什么它没有被输出缓冲区捕获。
标签: php unit-testing testing phpunit