uopz_set_mock

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

uopz_set_mock — 새 객체에 클래스 대신 모의 사용


설명

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

mock가 클래스 이름을 포함하는 문자열이면 class 대신 인스턴스화됩니다. mock도 될 수 있습니다.

메모: 속성 및 메서드에 대한 동적 액세스만 mock를 사용합니다. 정적 액세스는 여전히 원래 class를 사용합니다. 아래 를 참조하십시오.


매개변수

class
모의객체 클래스의 이름입니다.
mock
사용할 클래스 또는 개체의 이름을 포함하는 문자열 형식으로 사용할 모의입니다. 문자열이 전달되면 정규화된 클래스 이름이어야 합니다. 이 경우 ::class 마법 상수를 사용하는 것이 좋습니다.

반환 값

값이 반환되지 않습니다.


변경 로그

버전 설명
uopz 6.0.0 이 함수는 모의 정적 멤버를 더 이상 지원하지 않습니다. uopz_redefine()uopz_set_return() 또는 Componere를 대신 사용할 수 있습니다.

Examples

예제 #1 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();
?>
                  
                

위의 예는 다음을 출력합니다.

mockA
                

예제 #2 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();
?>
                  
                

위의 예는 다음을 출력합니다.

mockA
                

예제 #3 uopz_set_mock() 및 정적 멤버

uopz 6.0.0부터 모의 정적 멤버를 더 이상 지원되지 않습니다.

                  
<?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();
?>
                  
                

위의 예는 다음을 출력합니다.

A
A
                

uopz 5에서 위 예제의 출력:

mockA
mockA
                

기타