我有一个这样的构造:
class Foo
{
public function doFoo($value = '')
{
if (function_exists('foo'))
{
return foo($value);
}
// if php version does not support foo()
// ...
}
}
如果函数 foo 的存在取决于已安装的 PHP 版本,我如何使用 PHPUnit 测试此代码以实现 100% 的代码覆盖率(对于此示例,我假设该函数存在,否则 100% 的代码覆盖率是不可能的)。有没有办法在运行时禁用/启用 PHP 函数?
任何想法如何解决它?
编辑:
我找到了一个解决方案:高级 PHP 调试器/PECL 扩展为此目的提供了一个函数 *rename_function*。
bool rename_function ( string $original_name , string $new_name )
将全局函数表中的 orig_name 重命名为 new_name。对于临时覆盖内置函数很有用。