2016-09-07 5 views
-1

HTTP 요청을하는 코드를 어떻게 테스트합니까? 실제 HTTP 호출을하는 대신 mock 객체를 사용하여 HTTP 요청에 올바른 본문 및 헤더 집합이 있는지 확인하려고합니다.PHPUnit 모의 요청 객체 및 바디 및 헤더 추출

+1

정보가 너무 적습니다. 테스트 할 코드를 게시하고 테스트하는 방법을 말할 수 있습니다. 우선, 조롱 된 객체를 받아서 사용할 수있는 코드가 필요합니다. 이 정의에 따르면 http 요청에 대한 클래스를 사용해야합니다. 예를 들어 curl : https://gitlab.w00tserver.org:617/snippets/2 – iRaS

답변

0

설명에 많은 정보가 없습니다. 그러나 처음에는이 예제 코드를 사용하여 안내 할 수 있습니다.

$httpMock = $this->getMockBuilder('\Vendor\Path\HttpHandlerYouWantToMock') 
       ->disableOriginalConstructor() 
       ->setMethods(['setBody', 'setHeader']) 
       ->getMock(); 

$httpMock->expects($this->once()) 
     ->method('setBody') 
     ->with($this->identicalTo('{"test":"test"}')); 


$httpMock->expects($this->once()) 
     ->method('setHeader') 
     ->with($this->identicalTo('Content-Type: application/json')); 

$service = new SomeService($httpMock); 
$service->post('/someApi', '{"test":"test"}'); 

단지 모두가 좋아하지만 경우에 보일 것입니다 어떻게 표현이 코드는 당신이 사용하고있는 HTTP 처리기 아무 생각하거나 하나에 의존하는 다른 서비스를 포함합니다.

그래서 주요 아이디어는 자신의 서비스에서 사용하는 모든 서비스를 조롱합니다. 그리고이 모의에 대해 어떤 방법을 사용할 것인지를 정의하고 거기에 어떤 데이터가 전달되어야 하는지를 정의하십시오.

마지막으로 phpunit 문서를 사용하십시오. https://phpunit.de/manual/current/en/test-doubles.html

+0

그는 http 클래스를 사용하지 않고 있습니다 대신 curl_init '직접 ... – iRaS