我在PHP中有以下代码。
$response = $this->client->request('GET', $path, $requestBody, $headers);
$isRequestSuccess = $response->getStatusCode() === "200";
if ($isRequestSuccess) {
return $response->getBody()->getContents();
}
似乎我成功地创建了一个请求的mock。 It seems like I was successful in creating a mock for the request. 但我应该如何使用Mockery来模拟请求呢?
$mockResponse = \Mockery::mock('GuzzleHttp\Psr7\Response');
$clientMock
->shouldReceive('request')
->once()
->withAnyArgs()
->andReturn($mockResponse);
$clientMock->shouldReceive('getStatusCode')->andReturn(200);
但是,我应该如何使用Mockery来模拟... getStatusCode
?
它应该返回一个 Psr7\Response
对象 GuzzleHttp
.
我知道... $clientMock
返回值应该分配给一个参数,但我应该如何模拟
$response->getStatusCode();
和
$response->getBody()->getContents()
如果我要嘲笑 getStatusCode
并返回200,我得到以下错误。
Method Mockery_4_GuzzleHttp_Psr7_Response::getStatusCode() does not exist on this mock object
这不是一个 $request
它是一个 $response
,你最好给它起个名字。它是非常混乱的,$request变量包含一个响应对象。
无论如何。
Mockery::mock(ResponseInterface::class)->shouldReceive('getStatusCode')->andReturn(200);
深入来看,你可能不必在意,那个响应是被模拟的,对测试毫无用处,如果你设置的模拟正确,你就会进行测试,而不是测试你的代码。