(PECL uopz 5, PECL uopz 6, PECL uopz 7)
uopz_set_mock — Usa mock em vez de classe para novos objetos
Se mock
for uma string contendo o nome de uma classe, ela será instanciada em vez de
class
. mock
também pode ser um objeto.
Nota:
Somente o acesso dinâmico a propriedades e métodos utilizará o objeto
mock
. O acesso estático ainda utiliza a classe original do parâmetroclass
. Veja o exemplo abaixo.
class
O nome da classe a ter o mock usado.
mock
O mock a ser usado é uma string contendo o nome da classe a ser usada ou de um objeto.
Se uma string for passada, ela deve ser o nome completo da classe. É
recomendado usar a constante mágica ::class
neste caso.
Nenhum valor é retornado.
Versão | Descrição |
---|---|
PECL uopz 6.0.0 | Esta função não suporta mais o mock de membros estáticos. uopz_redefine() e uopz_set_return(), ou Componere podem ser usados em seu lugar. |
Exemplo #1 Exemplo 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();
?>
O exemplo acima produzirá:
mockA
Exemplo #2 Exemplo 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();
?>
O exemplo acima produzirá:
mockA
Exemplo #3 uopz_set_mock() e membros estáticos
A partir do uopz 6.0.0, o mock de membros estáticos não é mais suportada.
<?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();
?>
O exemplo acima produzirá:
A A
Saída do exemplo acima no uopz 5:
mockA mockA