2011-12-07 2 views
2

휴식 컨트롤러의 단위 테스트 방법을 모르겠습니다. 여기 내 코드는 다음과 같습니다.Zend로 나머지 API를 테스트하는 방법은 무엇입니까?

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

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

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

} 

게시물을 어떻게 만듭니 까? 이것은 당신이 당신의 REST 서비스를 테스트 할 수있는 POST 호출 (HTTP)을 만들고 싶어 당신이 필요하지만 경우

답변

0

확실하지, 당신은 Zend_Http_Client 사용할 수 있습니다

http://framework.zend.com/manual/en/zend.http.client.html

어쨌든,이 경우 단위 테스트의 경우 서버에서 라이브 및 액세스 가능하도록 응용 프로그램 (현재 빌드 된 testet)이 필요하므로 더 복잡해집니다. 이는 빌드 환경을 어떻게 구성 했느냐에 달려 있습니다.

테스트를 실행하기 전에 빌드가 (자동으로) 배포되는 준비 (가상) 시스템이 있어야합니다. 그 기계는 시험을 수행하는 기계에서 볼 수 있어야합니다.

희망이 도움이되었습니다. 건배!

+0

예는 단위 테스트를위한 것입니다. 그래서 나는 단지 게시물을 만들고 그 결과를 다음과 같은 assert 메서드와 비교합니다. $ list = new Application_Model_DbTable_Chain(); \t \t $ entries = $ list-> fetchAll(); \t \t \t \t $ this-> assertSame (4, count ($ entries)); – user1086617

+0

글쎄, 당신이 명심해야 할 것은 서버에 배치되지 않은 REST 서비스를 호출 할 수 없다는 것이다. 빌드는 테스트 서버에 응용 프로그램을 배포 한 다음 해당 라이브 서비스에 대해 테스트 스위트를 실행해야합니다. – nandinga

0

기본적으로 질문은 컨트롤러 테스트에서 PUT 및 DELETE를 호출하는 방법을 모방하는 것입니다. 이 이후 분명히 작동하지 않습니다

$this->request->setMethod('PUT'); 

당신은 매개 변수를 _method 제공하여 일반 HTTP의 POST와 모두 이러한 작업에 액세스 할 수 있습니다.

그래서 PUT 호출 :

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

삭제 호출하려면 : 여기에 편안하고 라우팅을 처리하는 방법에 대한

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

더 읽기 - http://framework.zend.com/manual/en/zend.controller.router.html#zend.controller.router.routes.rest

관련 문제