uopz_set_mock

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

uopz_set_mockUsa mock em vez de classe para novos objetos

Descrição

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

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âmetro class. Veja o exemplo abaixo.

Parâmetros

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.

Valor Retornado

Nenhum valor é retornado.

Registro de Alterações

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.

Exemplos

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

Veja Também