私はこのような構造を持っています:
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 (文字列 $original_name , 文字列 $new_name )
グローバル関数テーブルで orig_name を new_name に名前変更します。組み込み関数を一時的にオーバーライドするのに役立ちます。