在我的情況下,我有自定義請求和響應對象:My_Controller_Request_Rest
和My_Controller_Response_Rest
。我創建了一個新的My_Controller_Request_RestTestCase
和My_Controller_Response_RestTestCase
,分別擴展了Zend_Controller_Request_HttpTestCase
和Zend_Controller_Response_HttpTestCase
。
什麼David Harkness建議實際上解決了這個問題。唯一的事情是你的對象必須擴展對應於每個類的HttpTestCase類。
您需要爲每個對象創建setter,因爲您不允許直接設置它們。
我有以下ControllerTestCase
代碼:
tests/application/controllers/ControllerTestCase.php
abstract class ControllerTestCase extends Zend_Test_PHPUnit_ControllerTestCase
{
/**
* Application instance.
* @var Zend_Application
*/
protected $application;
/**
* Setup test suite.
*
* @return void
*/
public function setUp()
{
$this->_setupInitializers();
$this->bootstrap = array(
$this,
'applicationBootstrap',
);
parent::setUp();
$this->setRequest(new My_Controller_Request_RestTestCase());
$this->setResponse(new My_Controller_Response_RestTestCase());
}
}
我定製的請求和響應對象具有以下特徵:
library/My/Controller/Request/Rest.php
class My_Controller_Request_Rest extends Zend_Controller_Request_Http
{
// Nothing fancy.
}
現在
class Bonzai_Controller_Response_Rest extends Zend_Controller_Response_Http
{
// Nothing fancy either
}
,這是我無法弄清楚,如何避免library/My/Controller/Request/Rest.php
和library/My/Controller/Controller/Request/RestTestCase.php
重複相同的代碼。在我的情況下,在Request/Rest.php和Request/RestTestCase.php以及Response/Rest.php和Response/RestTestCase.php中的代碼是相同的,但它們擴展爲Zend_Controller_(Request|Response)_HttpTestCase
。
我希望我明確自己。我知道這個帖子已經過時了,但我認爲有必要再擴展一下。
請參閱http://stackoverflow.com/questions/190292/phpunit-unit-testing-with-items-that-need-to-send-headers – ManseUK