如何用Zend测试休息api?

时间:2011-12-07 22:22:00

标签: testing rest zend-framework

我不知道如何对我的休息控制器进行单元测试。这是我的代码:

public function testpostAction(){
    $this->dispatch('/chain');

    $this->request->setHeader('Content-Type', 'text/json')          
                  ->setMethod('POST')
                  ->setPost(array(
                      'chain_name' => 'mychaintest'
                  ));   

    $this->assertAction('post'); ???

}

我如何发帖?

2 个答案:

答案 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