uopz_set_mock

(PECL uopz 5, PECL uopz 6, PECL uopz 7)

uopz_set_mockUtiliza una simulación en lugar de una clase para nuevos objetos

Descripción

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

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 la class original. Consulte el ejemplo a continuación.

Parámetros

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.

Valores devueltos

No devuelve ningún valor.

Historial de cambios

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.

Ejemplos

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

Ver también

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top