2014-11-16 3 views
1

배경 : 아직 모의 (mock)를 사용하는 법을 배우고 있으며 WordPress 플러그인을 테스트하려고합니다. WordPress를로드하지 않고 단순히 가짜 클래스를 사용하여/함수를 필요에 따라 사용하고 코드의 입력과 출력 만 테스트하는 것을 선호합니다.수업을 조롱하고 정규 수업을 사용하는 방법이 있습니까?

// WP_Query IS NOT DEFINED 

$mock = \Mockery::mock('WP_Query', array('have_posts' => true)); 

$this->assertTrue($mock->have_posts()); 

$q = new WP_Query(); 

// fails with "Call to undefined method WP_Query::have_posts()" 
$this->assertTrue($q->have_posts()); 

는 조롱과 위 가능 :

나는 다음을 수행하려고?

답변

0

두 번째 인수로 배열을 Mockery::mock에 전달하면 생성자 인수가 필요하며 조롱 할 메서드는 필요하지 않습니다.

대신, 다음이 필요합니다 상술 한 바와 같이

$mock = \Mockery::mock('WP_Query'); 
$mock->shouldReceive('have_posts')->andReturn(true); 
+0

불행하게도이 같은 결과를 생성합니다. – farinspace

+0

샘플에서는 모의에 대한 주장을 테스트하고 그 아래에 WP_Query의 직선 인스턴스를 테스트하고있다. $ q가 참으로 그 클래스의 인스턴스라면, 그 메소드는 단순히 존재하지 않는다. – bcmcfc

+0

Mockery가 실제로 나를 위해 그것을 만들 것이라고 나는 짐작했다. 그래서 WP_Query를 사용할 두 번째 객체 "B"를 테스트하는 중이라면 "B"를 사용하기 전에 WP_Query의 정의를 조롱 할 수 있습니다. – farinspace

관련 문제