PHPUnit如何测试二进制输出?

时间:2014-09-11 18:04:28

标签: php unit-testing testing phpunit

我有一个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

我如何只关闭我在测试方法中启动的缓冲区?

1 个答案:

答案 0 :(得分:0)

最近也让我感到沮丧。您似乎使用的是更高版本的PHPUnit(例如4.5)。他们changed the way that output buffering is handled通过以下方式:

  • expectOutputString(string $expectedString)
  • expectOutputRegex(string $regularExpression)

我相信您的示例可以使用RegEx方法确保图像中出现预期的EXIF数据字符串或其他测试。