PHPUnit模拟请求对象并提取body和header

时间:2016-09-07 19:16:30

标签: php phpunit

如何对发出http请求的代码进行单元测试。我想使用模拟对象并验证http请求是否具有正确的正文和标题集,而不是进行实际的http调用。

1 个答案:

答案 0 :(得分: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