2016-09-07 4 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ハンドラ見当がつかないか、この1つはに依存している他のサービスが含まれている場合。

主なアイデアは、あなた自身のサービスで使用されるすべてのサービスを模擬するだけです。そして、この模擬のためにどのような方法を使用して、どのデータをそこに渡すべきかを定義します。

最後にphpunitのマニュアルを使用します。https://phpunit.de/manual/current/en/test-doubles.html

+0

彼はhttpクラスを使用していないことを肯定しています。代わりに 'curl_init '直接... – iRaS

関連する問題