2010-12-30 2 views
0

Zend_Service를 사용하여 Twitter API를 호출하는 컨트롤러 용 유닛 테스트를 작성하려고합니다.트위터 API를 사용하는 Zend_Controller를 테스트 중

/** 
* Authenticate Step 1 for Twitter 
*/ 
public function authenticateAction() 
{ 
    $this->service->authenticate(); 
} 

서비스는 수행합니다

/** 
* Authenticate with twitter 
* 
* @return void 
*/ 
public function authenticate() 
{ 
    $consumer = new Zend_Oauth_Consumer($this->config); 
    $token = $consumer->getRequestToken(); 
    $this->session->twitterRequestToken = serialize($token); 
    $consumer->redirect(); 
    exit; 
} 

내 문제는 내가 어떻게 단위 테스트에 대한 서비스 내부 인증하고 동작을 교체하는 생각이 없다는 것입니다. 테스트가 실행되는 동안 Twitter API를 호출하고 싶지 않습니다.

그런 일을 할 수있는 조롱 프레임 워크가 있습니까?

답변

2

Zend_Service_Twitter는 테스트 케이스에 스텁 수 Zend_Http_Client를 사용

$httpClient = $this->getMock('Zend_Http_Client'); 

$httpResponse = new Zend_Http_Response(200, array(), $data); // $data - response you expected to get 

$httpClient->expects($this->any()) 
        ->method('request') 
        ->will($this->returnValue($httpResponse)); 

Zend_Service_Twitter::setLocalHttpClient($httpClient); 
관련 문제