2012-03-14 2 views
2

propel 모델이나 criteria 객체를 입력으로 사용하는 클래스를 unittest하고 싶습니다.propel 쿼리가있는 클래스를 입력으로 테스트

이것은 자신의 모델이없는 Symfony2 번들이므로 입력 유형을 모방 한 클래스를 사용하고 정적 값을 반환하는 getter 및 setter를 사용할 수 있다고 생각하고 싶습니다.

이것이 가능한가? 누구든지이 작업을 수행하는 데 경험이 있습니까? 내가 질문 권리를 얻는 경우에

답변

0

, 당신은 단순히 스텁을 원 :

class PropelModelStub { 
    public $someparam; 

    private someMethod(){ 
     // .. 
    } 
} 

스텁 클래스에 사용되는 모든 메소드를 구현하고 일이 뭐죠 어떻게 든 추적해야합니다. 이것은 당신의 수업과 당신이 시험하고 싶은 것에 달려 있습니다. 함수의 사용법이나 함수에 전달 된 속성을 추적 할 수 있습니다. 테스트에

간단히 사용은 : 여기

public function testMyClass(){ 
    $stub = new PropelModelStub(); 
    $classToTest = new MyClass($stub); 
    classToTest->whatever(); 

    $this->assertEquals('ValueIExpect', $stub->someparam); 
} 

당신은 당신의 클래스로 스텁을 통과하고 당신이 당신의 코드에서와 같이 다음이 클래스를 사용합니다. 그런 다음 스텁에 올바른 값이 있는지 확인합니다. 스텁

당신의 PropelModel 항상 몇 가지 기본 클래스에서 확장하는 경우에서

phpunit을 빌드, 당신은 당신의 모형을 만들 phpunit을 사용할 수 있습니다. 이 일들이 방법으로 쉽게 또한 코드를 감소 :

$stub = $this->getMock('\\Namespace\\of\\PropelModel'); 
$stub ->expects($this->once()) 
->method('someMethod') 
->will($this->returnValue(1)); 

이에 대한 자세한 내용은 here를 참조하십시오.