我正在开发一个允许用户通过 SMS 文本消息进行交互的项目。我对 Zend Framework 的请求和响应对象进行了子类化,以从 SMS API 获取请求,然后发回响应。当我通过开发环境“测试”它时它可以工作,但我真的很想进行单元测试。
但是在测试用例类中,它没有使用我的请求对象,而是使用 Zend_Controller_Request_HttpTestCase。我很确定我会对响应对象有同样的问题,只是我还没有到那个时候。
我的简化测试类:
class Sms_IndexControllerTest extends Zend_Test_PHPUnit_ControllerTestCase {
...
public function testHelpMessage() {
// will output "Zend_Controller_Request_HttpTestCase"
print get_class($this->getRequest());
...
}
}
如果我在运行测试之前覆盖请求和响应对象,如下所示:
public function setUp()
{
$this->bootstrap = new Zend_Application(APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini');
parent::setUp();
$this->_request = new Sms_Model_Request();
$this->_response = new Sms_Model_Response();
}
在调用前端控制器进行调度之前,我无法使用 Zend_Controller_Request_HttpTestCase 中的方法(如 setMethod 和 setRawBody)来设置我的测试。
在对请求和响应对象进行子类化后,如何对控制器进行单元测试?