В моем случае у меня есть объекты пользовательских запросов и ответов: My_Controller_Request_Rest
и My_Controller_Response_Rest
.
Что я сделал, чтобы решить эту проблему, я создал новые My_Controller_Request_RestTestCase
и My_Controller_Response_RestTestCase
, которые расширяют Zend_Controller_Request_HttpTestCase
и Zend_Controller_Response_HttpTestCase
соответственно.
То, что предложил Дэвид Харкнесс , на самом деле решает проблему. Единственное, что ваши объекты должны расширять класс HttpTestCase, соответствующий каждому классу.
Вам необходимо создать сеттеры для каждого объекта, поскольку вы не можете устанавливать их напрямую.
У меня есть следующий 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.
}
library/My/Controller/Response/Rest.php
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
.
Надеюсь, я ясно дал понять. Я знаю, что сообщение старое, но я думаю, что стоит расширить это немного больше.