PHPUnit에서 개인 메소드를 모의하는 방법
문제:
특정 시나리오에서 테스트 내부적으로 호출되는 전용 메서드가 있기 때문에 클래스의 특정 섹션이 까다로울 수 있습니다. 원하는 코드를 테스트하기 위해 비공개 메서드의 결과를 어떻게 스텁할 수 있나요?
답변:
공용 API의 중요성:
일반적으로 클래스를 테스트할 때는 클래스가 제공하는 계약을 나타내는 공개 API에 중점을 두는 것이 좋습니다. 비공개 및 보호 메서드는 구현 세부 사항이며 테스트 안정성에 영향을 주어서는 안 됩니다.
전역 상태 수정 테스트:
어떤 경우에는 비공개 메서드에 논리가 포함될 수 있습니다. 전역 상태에 따라 달라지므로 테스트하기가 어렵습니다. 이 문제를 해결하려면 전역 상태를 제거하고 클래스에 삽입할 수 있는 종속성을 도입하도록 코드를 리팩터링하는 것이 좋습니다.
비공개 메소드 모의를 위한 모의 프레임워크 사용:
If 비공개 메소드를 직접 테스트하는 것은 불가피합니다. PHPUnit은 모의 프레임워크를 사용하여 비공개 메소드를 모의하는 방법을 제공합니다. 그러나 이 접근 방식은 캡슐화를 깨뜨리고 구현 세부 사항에 대한 과도한 의존으로 이어질 수 있으므로 일반적으로 권장되지 않습니다.
PHPUnit을 사용하여 비공개 메소드를 모의하려면 다음 단계를 따르세요.
"Pragmatic Unit Testing"에서 인용:
"일반적으로 테스트를 위해 캡슐화를 깨고 싶지 않습니다... 대부분의 경우 공개 메서드를 실행하여 클래스를 테스트할 수 있어야 합니다."
위 내용은 PHPUnit에서 (정말로) 비공개 메서드를 모의할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!