Php/docs/function.uopz-set-mock

提供:Dev Guides
< Php
移動先:案内検索

uopz_set_mock

(PECL uopz 5, PECL uopz 6)

uopz_set_mockUse mock instead of class for new objects


説明

uopz_set_mock ( string $class , mixed $mock ) : void

If mock is a string containing the name of a class then it will be instantiated instead of class. mock can also be an object.

注意:

Only dynamic access to properties and methods will use the mock object. Static access still uses the original class. See example below.

パラメータ

class
The name of the class to be mocked.
mock
The mock to use in the form of a string containing the name of the class to use or an object. If a string is passed, it has to be the fully qualified class name. It is recommended to use the ::class magic constant in this case.


変更履歴

バージョン 説明
uopz 6.0.0 Mocking static members is no longer supported by this function.

uopz_redefine() and uopz_set_return(), or Componere can be used instead.


例1 uopz_set_mock() example

<?phpclass A {    public function who() {        echo "A";    }}class mockA {    public function who() {        echo "mockA";    }}uopz_set_mock(A::class, mockA::class);(new A)->who();?>

上の例の出力は以下となります。


mockA

例2 uopz_set_mock() example

<?phpclass A {    public function who() {        echo "A";    }}uopz_set_mock(A::class, new class {                            public function who() {                                echo "mockA";                            }                        });(new A)->who();?>

上の例の出力は以下となります。


mockA

例3 uopz_set_mock() and static members

As of uopz 6.0.0 mocking static members is no longer supported.


<?phpclass A {    const CON = 'A';    public static function who() {        echo "A";    }}uopz_set_mock(A::class, new class {                            const CON = 'mockA';                            public static function who() {                                echo "mockA";                            }                        });echo A::CON, PHP_EOL;A::who();?>

上の例の出力は以下となります。


A
A

Output of the above example in uopz 5:


mockA
mockA

参考