2013-05-19 4 views
1

내가 다음과 같은 클래스가 말 :phpunit을이 : 메소드의 매개 변수로 모의 개체를 전달

class Document 
{ 
    private file; 

    public function setFile(UploadedFile $file) 
    { 
    $this->file = $file; 
    } 

    public function getExt() 
    { 
    return $this->file->guessExtension(); 
    } 
} 

나는 getExt() 메소드를 테스트하고 싶습니다. ,

$file = $this->getMock('UploadedFile'); 

$file->expects($this->at(0)) 
    ->method('guessExtension') 
    ->will($this->returnValue('png')); 

$doc = new Document(); 
$doc->setFile($file); 
... 

을하지만 그것은 setFile()가 UploadedFile의 인스턴스를 기대하고 모의 객체 대신 발견한다는 나에게 오류를주고있다 : 나는 다음과 같이 테스트를 설정했습니다. 누구나 이런 종류의 시나리오를 테스트하는 방법에 대해 밝힐 수 있습니까? 초보자인데 모의 (mock)와 스텁 (stub)으로 테스트합니다.

감사합니다.

+0

를 전달할 필요가 생성 된 모의 클래스는 원래 클래스를 확장합니다. 우연히 네임 스페이스를 사용하고 있습니까? –

답변

-1

fab의 의견에 감사드립니다. 다음과 같이 변경하여 작동 시키십시오.

$file = $this->getMockBuilder('Symfony\Component\HttpFoundation\File\UploadedFile') 
     ->disableOriginalConstructor() 
     ->getMock(); 
-1

PHP 5.5.16부터 Chieh 솔루션은 더 이상 사용할 수 없습니다. See reference.

가능한 해결 방법은 /tmp에 임시 더미 파일을 만들고 setUp()/tearDown()으로 만들고 생성자에게 전달합니다. 그런 다음 필요한 방법을 조롱했습니다.

: UploadedFile는 두 개의 매개 변수

문제가되지 말았어야
관련 문제