PHPUnit을 사용하여 클래스 메쏘드 Mail의 테스트를 작성하려고합니다. 테스트 할 메소드는 saveMessage ($ arguments)입니다. saveMessage는 저장 외에도 클래스 메서드 $this->emailMessage($arguments)
을 호출 할 수 있습니다. saveMessage를 테스트하는 테스트를 작성하고 emailMessage가 올바른 인수로 올바르게 호출되었는지 테스트하지만 실제 emailMessage 메소드는 호출하지 않습니다.PHPUnit : 의존적 메소드를 재정의하고 테스트하는 방법
메일을 서브 클래스 화하고 emailMessage 메서드를 재정의 할 수있는 한 가지 방법이 있습니다. 더 매력적인 방법은 조롱 된 객체에서 saveMessage 메소드를 테스트하는 동안 Messages 클래스를 모방하고 emailMessage 메소드를 대체하는 것입니다. 그러나 그때 나는 조롱 된 객체 자체를 테스트 할 것입니다. 나는 그것이 나쁜 생각 인 것을 읽었지 만, 나는 왜이 경우에, 왜 확실하지 않다. 이를 위해 mock 객체를 사용하는 것이 안전합니까? 이 문제를 해결할 더 좋은 방법이 있습니까?
나는 Mail의 테스터 서브 클래스를 만드는 것이 가장 쉽고 깨끗한 방법이라고 생각한다. 이 일을하고 싶지 않은 이유가 있습니까? 테스트에서 고정 I_got_here 변수를 FALSE로 초기화 한 다음 재정의 한 emailMessage 함수에서 I_got_here 변수를 true로 설정 한 다음 테스트에 다시 넣으면 I_got_here가 true라는 것을 주장합니다. 마찬가지로 재정의 한 emailMessage 함수에 전달 된 인수를 다시 전달할 수 있습니다. –