私の単体テストでは、php の組み込みの file_get_contents() メソッドの動作をスタブしようとしています。
PHP でネイティブ メソッド (file_get_contents() や print_r() など) などをスタブ化する方法はありますか?
「スタブ」が置換を意味する場合、PHP override_function関数があります。ただし、これは PECL の一部です。名前を変更することもできます。
runkitで可能です。runkit_function_copy および runkit_function_redefine 関数を使用して、関数をコピーおよび再定義します。内部関数を変更するには、runkit.internal_override ini 設定を 1 に設定する必要があります。
PHP-5.3 の名前空間フォールバック ポリシー以降、非グローバル名前空間コンテキストで非修飾関数名の呼び出しをオーバーライドできます。
関数 […] の場合、名前空間関数 […] が存在しない場合、PHP はグローバル関数 […] にフォールバックします。
file_get_contents()
つまり、名前空間などの修飾されていない関数名への呼び出しはfoo
、foo\file_get_contents()
.
私は最近、PHP-Mockライブラリを作成しました。このライブラリは、time()
.
「スタブ」の意味が明確ではありません。
次のような関数のドキュメントを取得することを意味しますか?
/**
* (PHP 5 >= 5.1.0)<br/>
* Sets the default timezone used by all date/time functions in a script
* @link http://php.net/manual/en/function.date-default-timezone-set.php
* @param timezone_identifier string <p>
* The timezone identifier, like UTC or
* Europe/Lisbon. The list of valid identifiers is
* available in the .
* </p>
* @return bool This function returns false if the
* timezone_identifier isn't valid, or true
* otherwise.
*/
function date_default_timezone_set ($timezone_identifier) {}
?