2

私の単体テストでは、php の組み込みの file_get_contents() メソッドの動作をスタブしようとしています。

PHP でネイティブ メソッド (file_get_contents() や print_r() など) などをスタブ化する方法はありますか?

4

4 に答える 4

3

「スタブ」が置換を意味する場合、PHP override_function関数があります。ただし、これは PECL の一部です。名前を変更することもできます。

于 2010-03-31T13:42:00.777 に答える
2

runkitで可能です。runkit_function_copy および runkit_function_redefine 関数を使用して、関数をコピーおよび再定義します。内部関数を変更するには、runkit.internal_override ini 設定を 1 に設定する必要があります。

于 2010-03-31T13:39:50.680 に答える
0

PHP-5.3 の名前空間フォールバック ポリシー以降、非グローバル名前空間コンテキストで非修飾関数名の呼び出しをオーバーライドできます。

関数 […] の場合、名前空間関数 […] が存在しない場合、PHP はグローバル関数 […] にフォールバックします。

file_get_contents()つまり、名前空間などの修飾されていない関数名への呼び出しはfoofoo\file_get_contents().


私は最近、PHP-Mockライブラリを作成しました。このライブラリは、time().

于 2014-11-26T22:59:25.847 に答える
0

「スタブ」の意味が明確ではありません。

次のような関数のドキュメントを取得することを意味しますか?

/**
 * (PHP 5 &gt;= 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) {}

?

于 2010-03-31T13:37:51.563 に答える