uopz_set_mock
(PECL uopz 5, PECL uopz 6)
uopz_set_mock — Use mock instead of class for new objects
Description
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.
Note:
Only dynamic access to properties and methods will use the
mock
object. Static access still uses the originalclass
. See example below.
Parameters
-
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 | Description |
---|---|
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. |
Examples
Example #1 uopz_set_mock() example
<?php class A { public function who() { echo "A"; } } class mockA { public function who() { echo "mockA"; } } uopz_set_mock(A::class, mockA::class); (new A)->who(); ?>
The above example will output:
mockA
Example #2 uopz_set_mock() example
<?php class A { public function who() { echo "A"; } } uopz_set_mock(A::class, new class { public function who() { echo "mockA"; } }); (new A)->who(); ?>
The above example will output:
mockA
Example #3 uopz_set_mock() and static members
As of uopz 6.0.0 mocking static members is no longer supported.
<?php class 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(); ?>
The above example will output:
A A
Output of the above example in uopz 5:
mockA mockA
See Also
- uopz_get_mock() - Get the current mock for a class
- uopz_unset_mock() - Unset previously set mock
© 1997–2020 The PHP Documentation Group
Licensed under the Creative Commons Attribution License v3.0 or later.
https://www.php.net/manual/en/function.uopz-set-mock.php