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
기타
- uopz_get_mock() - 클래스에 대한 현재 모의 가져오기
- uopz_unset_mock() - 이전에 설정된 모의 설정 해제