2010-12-30 1 views
0

私はZend_Serviceを使ってTwitter APIを呼び出すコントローラ用の単体テストを作成しようとしています。Twitter 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); 
関連する問題