2014-02-17 3 views
0

템플릿 메소드 디자인 패턴 구현이있는 코드가 있다고 가정 해 보겠습니다. 그리고 필자는 템플릿 메서드에서 메서드 호출의 순서와 개수를 테스트하려고합니다. 나는 PHPUnit 모의 객체를 사용하려고한다.PHPUnit 모의 객체를 이용한 템플릿 메소드 디자인 패턴 구현 테스트

PHPUnit_Framework_ExpectationFailedException : 
Expectation failed for method name is equal to <string:foo> when invoked 1 time(s). 
Method was expected to be called 1 times, actually called 0 times. 

이 방법은 모의 개체를 사용하여 같은 시나리오에서 호출을 계산하는 것이 가능 : 나는 그런 오류가 결과

class Foo { 

    public function __construct() {} 

    public function foobar() { 
     $this->foo(); 
     $this->bar(); 
    } 

    protected function foo() {} 

    protected function bar() {} 
} 


class FooTest extends PHPUnit_Framework_TestCase { 

    public function testFoo() { 
     $fooMock = $this->getMock('Foo', array('foo', 'bar')); 

     $fooMock->foobar(); 

     $fooMock->expects($this->once())->method('foo'); 
     $fooMock->expects($this->once())->method('bar'); 
    } 
} 

: 내 소스 코드는 다음과 같습니다?

답변

0

그것은 내 바보 같은 실수입니다. 잘못된 모의 객체 생성 시퀀스 :

// ... 

public function testFoo() { 
    $fooMock = $this->getMock('Foo', array('foo', 'bar')); 
    $fooMock->expects($this->once())->method('foo'); // (!) immediately after   
    $fooMock->expects($this->once())->method('bar'); // mock object instantiation 

    $fooMock->foobar(); 
}