我不知道如何对我的休息控制器进行单元测试。这是我的代码:
public function testpostAction(){
$this->dispatch('/chain');
$this->request->setHeader('Content-Type', 'text/json')
->setMethod('POST')
->setPost(array(
'chain_name' => 'mychaintest'
));
$this->assertAction('post'); ???
}
我如何发帖?
答案 0 :(得分:0)
不确定这是否是您所需要的,但如果您想进行POST调用(http)来测试您的REST服务,可以使用Zend_Http_Client
:
http://framework.zend.com/manual/en/zend.http.client.html
无论如何,如果这是用于单元测试,那将会更复杂,因为您需要您的应用程序(当前版本为testet)在服务器中是可用的和可访问的。这取决于您如何配置构建环境。
应该有一个暂存(虚拟)机器,在运行测试之前(自动)部署构建。运行测试的机器应该可以看到该机器。
希望这有帮助。干杯!
答案 1 :(得分:0)
所以,基本上你的问题是如何在控制器测试中模拟调用PUT和DELETE? 因为这显然不起作用:
$this->request->setMethod('PUT');
您可以通过提供_method参数来使用纯HTTP POST访问这两个操作。
所以打电话给PUT:
$this->request->setMethod('POST');
$this->dispatch('articles/123?_method=put');
调用DELETE:
$this->request->setMethod('POST');
$this->dispatch('articles/123?_method=delete');
有关如何在此处理RESTful路由的更多信息 - http://framework.zend.com/manual/en/zend.controller.router.html#zend.controller.router.routes.rest