Тестирование Zend_Controller, который использует Twitter API - PullRequest
0 голосов
/ 30 декабря 2010

Я пытаюсь написать модульный тест для моего контроллера, который вызывает API Twitter с помощью Zend_Service.

/**
 * 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;
}

Моя проблема в том, что я понятия не имею, как заменить действие аутентификации внутри службы для модульного теста. Я не хочу вызывать API Twitter во время выполнения тестов.

Есть ли Mocking Framework, который может делать такие вещи?

1 Ответ

2 голосов
/ 03 марта 2011

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...