在laravel中,我需要伪造guzzlehttp发布请求。
try {
return $client->request('POST', $url);
} catch (GuzzleException $e) {
return $e->getCode();
}
此请求返回401或包含一些数据的成功消息。
此刻,我需要伪造此函数以调用其他方法。我怎样才能做到这一点?
这是我的作曲家文件的一部分
"laravel/framework": "5.1.*",
"guzzlehttp/guzzle": "~6.0.0",
答案 0 :(得分:3)
引用Guzzle docs:
Guzzle提供了一个模拟处理程序,该处理程序可用于通过将返回值移出队列来满足带有响应或异常的HTTP请求。
// Create a mock and queue two responses. $mock = new MockHandler([ new Response(200, ['X-Foo' => 'Bar']), new Response(202, ['Content-Length' => 0]), new RequestException("Error Communicating with Server", new Request('GET', 'test')) ]); $handler = HandlerStack::create($mock); $client = new Client(['handler' => $handler]); // The first request is intercepted with the first response. echo $client->request('GET', '/')->getStatusCode(); //> 200 // The second request is intercepted with the second response. echo $client->request('GET', '/')->getStatusCode(); //> 202
也:
Guzzle附带有一个node.js测试服务器,该服务器接收请求并从队列返回响应。测试服务器公开了一个简单的API,用于使响应入队并检查已收到的请求。
如果MockHandler和测试Web服务器不够用,请考虑编写自己的Handler。有关详细信息,请参见http://docs.guzzlephp.org/en/stable/handlers-and-middleware.html#handlers。