2012-10-13 2 views
14

유효한 콜백 될 것으로 예상 이 오류로 인해조롱 call_user_func_array는()는 매개 변수 (1) 내가 조롱해야하는 클래스가

call_user_func_array()가 파라미터 1 콜백 유효한 것으로 기대 클래스 '조롱 \ Expec tation 줄에 /vendor/mockery/mockery/library/Mockery/CompositeExpectation.php 에서 '게시'방법이없는 '은 54

나는 시험이 코드

에 실패 발견 디버깅 시도
public function __call($method, array $args) 
{ 
    foreach ($this->_expectations as $expectation) { 
     call_user_func_array(array($expectation, $method), $args); 
    } 
    return $this; 
} 

여기서
$ 방법 = = 배열 ​​()
$ 기대가

조롱 \ 기대 객체()의 인스턴스
$ 인수를 '공개'

PHP 5.3.10을 사용하고 있습니다 - 무엇이 잘못 되었습니까?

답변

37

모의 자체가 아닌 $mediaPublisherMock에 모의 기대치를 지정했기 때문에 이러한 현상이 발생합니다. 같은, 그 전화의 끝에 getMock 방법을 추가하십시오 :

$mediaPublisherMock = \Mockery::mock('MessagePublisher') 
    ->shouldReceive('publish') 
    ->withAnyArgs() 
    ->times(3) 
    ->andReturn(null) 
    ->getMock(); 
+2

을 "게시"또는하게 분할 두 줄로 코드 : $ mediaPublisherMock = \ Mockery :: mock ('MessagePublisher'); $ mediaPublisherMock> shouldReceive ('게시') -> withAnyArgs() -> times (3) -> andReturn (null); 이것은 제 해결책이었습니다. –

+0

남자 .... 당신은 생명의 은인입니다. -> getMock() 정확히 2 일 동안 놓친거야 –

0

나는 $ 기대 클래스해야 MessagePublisher 믿을

이 작동 표준 phpunit을 모의 라이브러리

를 사용하여 해결할

+0

내가 두 번 확인 - 그것은 조롱 \의 기대, 그것은 재산 _mock (조롱 \ 모의) 및 _name = 문자열을 포함 – mrok

2

확인 문제 :이에서 시작하지 않은 이유는

$mediaPublisherMock = $this->getMock('Mrok\Model\MessagePublisher', array('publish'), array(), '', false); 
$mediaPublisherMock->expects($this->once()) 
    ->method('publish'); 

)