带有输出缓冲的phpunit


phpunit with output buffering

我正试图将PHPunit集成到一个大项目中,除了所有依赖ob_start()的方法似乎都会导致一个有风险的测试之外,一切似乎都很好。

在线阅读,风险测试似乎是执行测试方法未涵盖的代码的测试。然而,我根本没有使用@covers注释,而且这种情况只发生在ob_start()上。

所以有几个问题:

  1. 有可能解决这个问题吗
  2. ob_start在测试方面是否存在固有的问题
  3. 有办法绕过它吗?(如果无法解决)

用例是使用一个返回视图的框架(而不是发送到浏览器),Codeigniter是一个经典的例子,您可以在其中返回视图。返回视图取决于ob_start()。非常感谢!

解决方案有两个方面,因为它围绕着我遇到的两个问题。

  1. 关于具体的问题,在框架中使用视图(codeigniter),我只是为加载器使用了一个mock,所以我实现了一个空函数,它实际上并不加载和输出html
  2. 关于我对PHPunit行为的实际问题,如果使用ob_start和ob_clean,PHPunit(4.5)似乎会假设测试是有风险的,但是当使用ob_get_clean时,测试按预期工作。我不知道为什么,因为我没有深入研究代码本身,但这为我解决了问题