带有输出缓冲的 phpunit
phpunit with output buffering
我正在尝试将 PHPunit 集成到一个大项目中,一切似乎都很好,除了似乎所有依赖 ob_start() 的方法都会导致一个有风险的测试。
从网上看,风险测试似乎是执行测试方法未涵盖的代码的测试。但是,我根本没有使用@covers 注释,而且这只发生在 ob_start() 上。
所以有几个问题:
- 这个问题可以解决吗?
- 在测试方面,ob_start 有什么内在的错误吗?
- 有解决办法吗?(如果无法解决的话)。
用例是使用一个框架,该框架的视图被 return 编辑(而不是发送到浏览器),Codeigniter 是一个经典示例,您可以在其中 return 视图。返回视图取决于 ob_start()。
非常感谢!
解决方案有两个方面,因为它围绕着我遇到的两个问题。
- 关于具体问题,在框架(codeigniter)中使用视图,我只是为加载程序使用了一个模拟,所以我实现了一个不实际加载和输出的空函数html。
- 关于我对 PHPunit 行为的实际问题,似乎 PHPunit(4.5) 会假定如果使用 ob_start 和 ob_clean 进行测试是有风险的,但是当使用 时ob_get_clean 测试按预期工作。我不确定为什么,因为我没有深入研究代码本身,但这为我解决了问题
我正在尝试将 PHPunit 集成到一个大项目中,一切似乎都很好,除了似乎所有依赖 ob_start() 的方法都会导致一个有风险的测试。
从网上看,风险测试似乎是执行测试方法未涵盖的代码的测试。但是,我根本没有使用@covers 注释,而且这只发生在 ob_start() 上。
所以有几个问题:
- 这个问题可以解决吗?
- 在测试方面,ob_start 有什么内在的错误吗?
- 有解决办法吗?(如果无法解决的话)。
用例是使用一个框架,该框架的视图被 return 编辑(而不是发送到浏览器),Codeigniter 是一个经典示例,您可以在其中 return 视图。返回视图取决于 ob_start()。 非常感谢!
解决方案有两个方面,因为它围绕着我遇到的两个问题。
- 关于具体问题,在框架(codeigniter)中使用视图,我只是为加载程序使用了一个模拟,所以我实现了一个不实际加载和输出的空函数html。
- 关于我对 PHPunit 行为的实际问题,似乎 PHPunit(4.5) 会假定如果使用 ob_start 和 ob_clean 进行测试是有风险的,但是当使用 时ob_get_clean 测试按预期工作。我不确定为什么,因为我没有深入研究代码本身,但这为我解决了问题