(PECL uopz 5, PECL uopz 6, PECL uopz 7)
uopz_set_mock — Utiliza una simulación en lugar de una clase para nuevos objetos
Si mock
es una cadena que contiene el nombre de una clase, se instanciará en lugar de
class
. mock
también puede ser un objeto.
Nota:
Solo el acceso dinámico a las propiedades y métodos usará el objeto
mock
. El acceso estático sigue utilizando laclass
original. Consulte el ejemplo a continuación.
class
El nombre de la clase que se va a simular.
mock
La simulación a usar en forma de cadena que contiene el nombre de la clase a usar o un objeto.
Si se pasa una cadena, debe ser el nombre totalmente calificado de la clase. Se recomienda usar la constante mágica ::class
en este caso.
No devuelve ningún valor.
Versión | Descripción |
---|---|
PECL uopz 6.0.0 | La simulación de miembros estáticos ya no es compatible con esta función. uopz_redefine() y uopz_set_return(), o Componere pueden ser utilizados en su lugar. |
Ejemplo #1 Ejemplo de uopz_set_mock()
<?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();
?>
El resultado del ejemplo sería:
mockA
Ejemplo #2 Ejemplo de uopz_set_mock()
<?php
class A {
public function who() {
echo "A";
}
}
uopz_set_mock(A::class, new class {
public function who() {
echo "mockA";
}
});
(new A)->who();
?>
El resultado del ejemplo sería:
mockA
Ejemplo #3 uopz_set_mock() y miembros estáticos
Desde uopz 6.0.0, la simulación de miembros estáticos ya no es compatible.
<?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();
?>
El resultado del ejemplo sería:
A A
El ejemplo anterior muestra con uopz 5:
mockA mockA