PHPUnit模拟请求对象并提取主体和头


PHPUnit mock request object and extract body and header

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

你的描述没有包含很多信息。但是作为开始,我可以使用下面的示例代码来指导您。

$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处理程序,或者如果这个包含任何其他服务依赖。

所以主要思想就是模仿你自己的服务所使用的所有服务。并为这个mock定义您认为将使用的方法和应该传递的数据。

最后使用phpunit文档https://phpunit.de/manual/current/en/test-doubles.html