fix: MockResponse total_time should not be simulated when provided

This commit is contained in:
Pierrick VIGNAND 2021-02-18 14:41:11 +01:00
parent 87aeb8da13
commit 8dada95cbf
No known key found for this signature in database
GPG Key ID: 29C53923892BFC99
2 changed files with 22 additions and 4 deletions

View File

@ -211,8 +211,8 @@ class MockResponse implements ResponseInterface
$response->info['size_upload'] = 0.0; $response->info['size_upload'] = 0.0;
} }
// simulate "total_time" if it is set // simulate "total_time" if it is not set
if (isset($response->info['total_time'])) { if (!isset($response->info['total_time'])) {
$response->info['total_time'] = microtime(true) - $response->info['start_time']; $response->info['total_time'] = microtime(true) - $response->info['start_time'];
} }
@ -260,7 +260,7 @@ class MockResponse implements ResponseInterface
'http_code' => $response->info['http_code'], 'http_code' => $response->info['http_code'],
] + $info + $response->info; ] + $info + $response->info;
if (isset($response->info['total_time'])) { if (!isset($response->info['total_time'])) {
$response->info['total_time'] = microtime(true) - $response->info['start_time']; $response->info['total_time'] = microtime(true) - $response->info['start_time'];
} }
@ -287,7 +287,7 @@ class MockResponse implements ResponseInterface
$offset = \strlen($body); $offset = \strlen($body);
} }
if (isset($response->info['total_time'])) { if (!isset($response->info['total_time'])) {
$response->info['total_time'] = microtime(true) - $response->info['start_time']; $response->info['total_time'] = microtime(true) - $response->info['start_time'];
} }

View File

@ -11,6 +11,24 @@ use Symfony\Component\HttpClient\Response\MockResponse;
*/ */
class MockResponseTest extends TestCase class MockResponseTest extends TestCase
{ {
public function testTotalTimeShouldBeSimulatedWhenNotProvided()
{
$response = new MockResponse('body');
$response = MockResponse::fromRequest('GET', 'https://example.com/file.txt', [], $response);
$this->assertNotNull($response->getInfo('total_time'));
$this->assertGreaterThan(0.0, $response->getInfo('total_time'));
}
public function testTotalTimeShouldNotBeSimulatedWhenProvided()
{
$totalTime = 4.2;
$response = new MockResponse('body', ['total_time' => $totalTime]);
$response = MockResponse::fromRequest('GET', 'https://example.com/file.txt', [], $response);
$this->assertEquals($totalTime, $response->getInfo('total_time'));
}
public function testToArray() public function testToArray()
{ {
$data = ['color' => 'orange', 'size' => 42]; $data = ['color' => 'orange', 'size' => 42];