如何对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