단위 테스트를 수행하고 있으며 클래스 중 하나에서 메소드 중 하나에서 메일을 보내야하므로 생성자 주입을 사용하여 Zend_Mail
Zend 프레임 워크 에있는 클래스 인스턴스를 주입합니다 .
이제 일부 사람들은 라이브러리가 충분히 안정적이며 자주 변경되지 않으면 랩핑 할 필요가 없다고 주장합니다. 따라서 그것이 Zend_Mail
안정적이며 변경되지 않고 내 요구에 완전히 부합 한다고 가정하면 래퍼가 필요하지 않습니다.
이제 다음에 Logger
의존하는 수업 을 살펴보십시오 Zend_Mail
.
class Logger{
private $mailer;
function __construct(Zend_Mail $mail){
$this->mail=$mail;
}
function toBeTestedFunction(){
//Some code
$this->mail->setTo('some value');
$this->mail->setSubject('some value');
$this->mail->setBody('some value');
$this->mail->send();
//Some
}
}
그러나 단위 테스트에서는 한 번에 하나의 구성 요소를 테스트해야하므로 Zend_Mail
클래스 를 조롱해야합니다 . 또한 클래스가 추상화가 아닌 생성에 의존하기 때문에 Dependency Inversion 원칙을 위반합니다 Logger
.
이제 Logger
줄 바꿈없이 어떻게 격리 테스트 할 수 Zend_Mail
있습니까?!
코드는 PHP로되어 있지만 답변 할 필요는 없습니다. 이것은 언어 별 기능보다 더 많은 디자인 문제입니다.