2015-01-24 4 views
12

PHPUnit에 존재하지 않는 클래스 모의 객체를 생성 할 수 있습니까?
의 내가 예를 들어, 다른 클래스의 인스턴스를 생성 몇 가지 클래스가 있다고 가정하자PHPUnit : 존재하지 않는 클래스 모방하기

class TaskRunner 
{ 
    public function runTasks() 
    { 
     // Run through some loop to get tasks and store each in $taskName 
     // Get task instance by given task name 
     $task = $this->getTaskInstance($taskName); 
     if ($task instanceof AbstractTask) { 
      $task->run(); 
     } 
    } 

    protected function getTaskInstance($taskName) 
    { 
     // Just an example 
     return new $taskName(); 
    } 
} 

내가 만든 작업 instace 일부 추상 클래스를 확장하는 경우 확인 runTasks 방법에 대한 단위 테스트를 실행하고 싶습니다.
상속 제약 조건을 검사하기 위해 파일 시스템에 샘플 클래스를 만들지 못할 가능성이 있습니까?
모두에게 감사드립니다!

+0

'-> getMock ('AbstractTask')'? – PeeHaa

+0

@PeeHaa 그렇습니다. 조건을 실행하는 것이 좋습니다. 'AbstracTask'가 아닌 수업은 어떨까요? 모토'stdClass'? –

+0

phpunit을 사용하여 구체적인 클래스를 조롱 할 수 있습니다. 하지만 인터페이스를 대신 입력해야 할 가능성이 더 큽니다. – PeeHaa

답변

25

예, PHPUnit과 함께 존재하지 않는 클래스를 스텁/모방하는 것이 가능합니다. $this->getMockBuilder('NameOfClass')->setMethods(array('foo'))->getMock();을 사용하여 평소와 같이 API를 사용하여 구성 할 수있는 foo() 메서드를 제공하는 존재하지 않는 클래스 NameOfClass의 개체를 만들면됩니다.

+0

좋아요! 따라서 클래스를 모의하는 파일 시스템에 물리적으로 존재할 필요는 없습니다. PHPUnit이 어떤 excetpion을 던지지 않을까요? –

+0

아니요, PHPUnit은 예외를 throw하지 않습니다. 물어 보는 대신에 그냥 시도해 보시지 않겠습니까? –

+1

나는 전화로 대답했다. 나는 그 순간 혼자서 그것을 시험 할 수 없었다. :) 미안. –

관련 문제