> 백엔드 개발 > PHP 튜토리얼 > PHPUnit에서 (정말로) 비공개 메서드를 모의할 수 있나요?

PHPUnit에서 (정말로) 비공개 메서드를 모의할 수 있나요?

Susan Sarandon
풀어 주다: 2024-10-29 10:17:30
원래의
729명이 탐색했습니다.

Can I (Really) Mock Private Methods in PHPUnit?

PHPUnit에서 개인 메소드를 모의하는 방법

문제:

특정 시나리오에서 테스트 내부적으로 호출되는 전용 메서드가 있기 때문에 클래스의 특정 섹션이 까다로울 수 있습니다. 원하는 코드를 테스트하기 위해 비공개 메서드의 결과를 어떻게 스텁할 수 있나요?

답변:

공용 API의 중요성:

일반적으로 클래스를 테스트할 때는 클래스가 제공하는 계약을 나타내는 공개 API에 중점을 두는 것이 좋습니다. 비공개 및 보호 메서드는 구현 세부 사항이며 테스트 안정성에 영향을 주어서는 안 됩니다.

전역 상태 수정 테스트:

어떤 경우에는 비공개 메서드에 논리가 포함될 수 있습니다. 전역 상태에 따라 달라지므로 테스트하기가 어렵습니다. 이 문제를 해결하려면 전역 상태를 제거하고 클래스에 삽입할 수 있는 종속성을 도입하도록 코드를 리팩터링하는 것이 좋습니다.

비공개 메소드 모의를 위한 모의 프레임워크 사용:

If 비공개 메소드를 직접 테스트하는 것은 불가피합니다. PHPUnit은 모의 프레임워크를 사용하여 비공개 메소드를 모의하는 방법을 제공합니다. 그러나 이 접근 방식은 캡슐화를 깨뜨리고 구현 세부 사항에 대한 과도한 의존으로 이어질 수 있으므로 일반적으로 권장되지 않습니다.

PHPUnit을 사용하여 비공개 메소드를 모의하려면 다음 단계를 따르세요.

  1. $testMe = $this->getMock("a", array("c"));
  2. expects() 및 method()를 사용하여 예상 동작 설정
  3. 모의 클래스에 대해 테스트를 실행합니다.

"Pragmatic Unit Testing"에서 인용:

"일반적으로 테스트를 위해 캡슐화를 깨고 싶지 않습니다... 대부분의 경우 공개 메서드를 실행하여 클래스를 테스트할 수 있어야 합니다."

위 내용은 PHPUnit에서 (정말로) 비공개 메서드를 모의할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿