Testing 如何使用Zend测试RESTAPI?

Testing 如何使用Zend测试RESTAPI?,testing,rest,zend-framework,Testing,Rest,Zend Framework,我不知道如何对我的rest控制器进行单元测试。这是我的密码: public function testpostAction(){ $this->dispatch('/chain'); $this->request->setHeader('Content-Type', 'text/json') ->setMethod('POST') ->setPost(arr

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

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

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

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

}

如何发布?

不确定这是否是您所需要的,但是,如果您想通过post调用(http)来测试REST服务,您可以使用
Zend_http_Client

无论如何,如果这是用于单元测试,那么它将更加复杂,因为您需要您的应用程序(正在测试的当前构建)在服务器中处于活动状态并可访问。这取决于您如何配置构建环境

应该有一个暂存(虚拟)机,在运行测试之前(自动)部署构建。运行测试的机器应该可以看到该机器


希望这有帮助。干杯

不确定这是否是您需要的,但是,如果您想进行POST调用(http)来测试REST服务,您可以使用
Zend_http_Client

无论如何,如果这是用于单元测试,那么它将更加复杂,因为您需要您的应用程序(正在测试的当前构建)在服务器中处于活动状态并可访问。这取决于您如何配置构建环境

应该有一个暂存(虚拟)机,在运行测试之前(自动)部署构建。运行测试的机器应该可以看到该机器


希望这有帮助。干杯

那么,基本上,您的问题是如何在控制器测试中模拟调用PUT和DELETE? 因为这显然不起作用:

$this->request->setMethod('PUT');
通过提供_method参数,您可以通过普通HTTP POST访问这两个操作

因此,我们称之为看跌期权:

$this->request->setMethod('POST');
$this->dispatch('articles/123?_method=put');
要调用DELETE:

$this->request->setMethod('POST');
$this->dispatch('articles/123?_method=delete');

这里有更多关于如何处理RESTful路由的阅读-

那么,基本上你的问题是如何在控制器测试中模拟调用PUT和DELETE? 因为这显然不起作用:

$this->request->setMethod('PUT');
通过提供_method参数,您可以通过普通HTTP POST访问这两个操作

因此,我们称之为看跌期权:

$this->request->setMethod('POST');
$this->dispatch('articles/123?_method=put');
要调用DELETE:

$this->request->setMethod('POST');
$this->dispatch('articles/123?_method=delete');

更多关于如何处理RESTful路由的阅读-是的,它是用于单元测试的。因此,我只想发表一篇文章,在将结果与assert方法进行比较之后,如:$list=newapplication\u Model\u DbTable\u Chain();$entries=$list->fetchAll();$this->assertSame(4,计数($entries));嗯,您需要记住的是,如果REST服务没有部署在服务器中,您就不能调用它。您的构建必须将应用程序部署到测试服务器,然后针对该实时服务运行测试套件。是的,它用于单元测试。因此,我只想发表一篇文章,在将结果与assert方法进行比较之后,如:$list=newapplication\u Model\u DbTable\u Chain();$entries=$list->fetchAll();$this->assertSame(4,计数($entries));嗯,您需要记住的是,如果REST服务没有部署在服务器中,您就不能调用它。构建必须将应用程序部署到测试服务器,然后针对该实时服务运行测试套件。