2015-01-12 3 views
3

PHP로 데이터베이스 이전 스크립트를 작성 중이므로 phpunit에서 git diff 결과를 조롱해야합니다. git diff는 이전 커밋 이후에 includes/in에 추가되거나 업데이트 된 파일의 이름 만 반환한다는 아이디어가 있습니다. 물론 스크립트에서 작업하고 변경 사항을 커밋하는 동안 계속 변경 될 것입니다.phpunit에서 git diff 결과를 조롱 할 수 있습니다.

#!/usr/bin/php 
<?php 

class Migrate { 

    public function gitDiff(){ 
     return shell_exec('git diff HEAD^ HEAD --name-only includes/'); 
    } 
} 
?> 

어떤 아이디어 :

다음 마이그레이션 클래스와 gitDiff 방법입니다? phpunit을에서

+0

당신이 겪고있는 문제점/구체적으로 무엇에 관해 무엇을 묻고 있습니까? 모의를 만드는 방법? 가짜 diff 결과를 얻는 방법? 다른 것? – PeeHaa

+0

다른 PHP 함수를 모방하는 것과 같은 방법입니다. 답을 조롱 할 때 명령 출력을 생성하는 방법이 있다면 실제 실행 결과를 파일에 저장하고 모의 파일에서 해당 파일 내용을 반환하도록합니다. – gontrollez

+0

@PeeHaa 내가 원하는 것은 명령이 예상대로 실행되는지 테스트하는 것입니다. 나는 그것에 대해 어떻게 가야할지 조금은 확신 할 수 없다. 어떻게 가니? – Jack

답변

6

:

$mock = Mock::create('Migrate'); 

Mock::when($mock)->getDiff()->thenReturn('your return'); 

$this->assertEquals("your return", $mock->getDiff()); 

모든 문서 here :

$mock = $this->getMockBuilder('Migrate') 
        ->setMethods(array('getDiff')) 
        ->getMock(); 

$mock->expects($this->any()) 
     ->method('getDiff') 
     ->will($this->returnValue('your return')); 

$this->assertEquals("your return", $mock->getDiff()); 

당신은 ouzo goodies 모의 도구를 사용할 수 있습니다.

+0

시간을내어 답변 해 주셔서 감사합니다.이 라이브러리를 체크 아웃 할 것입니다. 향후 조만간 조롱이 최선의 선택이 아님을 알았지 만 향후 유용 할 것으로 확신합니다. 그러나 이것은 여전히 ​​나의 기원에 대한 좋은 대답입니다. – Jack