uopz_set_mock

(PECL uopz 5, PECL uopz 6)

uopz_set_mockUse mock instead of class for new objects

Beschreibung

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.

Hinweis:

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

Parameter-Liste

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.

Changelog

Version Beschreibung
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.

Beispiele

Beispiel #1 uopz_set_mock() example

<?php
class {
    public function 
who() {
        echo 
"A";
    }
}

class 
mockA {
    public function 
who() {
        echo 
"mockA";
    }
}

uopz_set_mock(A::class, mockA::class);
(new 
A)->who();
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

mockA

Beispiel #2 uopz_set_mock() example

<?php
class {
    public function 
who() {
        echo 
"A";
    }
}

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

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

mockA

Beispiel #3 uopz_set_mock() and static members

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

<?php
class {
    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::CONPHP_EOL;
A::who();
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

A
A

Output of the above example in uopz 5:

mockA
mockA

Siehe auch