带有输出缓冲的 phpunit

phpunit with output buffering

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

从网上看,风险测试似乎是执行测试方法未涵盖的代码的测试。但是,我根本没有使用@covers 注释,而且这只发生在 ob_start() 上。

所以有几个问题:

  1. 这个问题可以解决吗?
  2. 在测试方面,ob_start 有什么内在的错误吗?
  3. 有解决办法吗?(如果无法解决的话)。

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

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

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