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