Skip to content

Commit 4d0b0db

Browse files
committed
Merge branch '5.4' into 6.0
* 5.4: fix SQLSRV throws for method_exists() [HttpKernel] Add basic support for language negotiation [Messenger] Add a middleware to log when transaction has been left open [HttpClient] Add method to set response factory in mock client Move array_merge calls out of loops to improve performance Remove references to DBALException [VarDumper] Fix handling of "new" in initializers on PHP 8.1
2 parents d3e5820 + eb9b819 commit 4d0b0db

File tree

3 files changed

+27
-1
lines changed

3 files changed

+27
-1
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
CHANGELOG
22
=========
33

4+
5.4
5+
---
6+
7+
* Add `MockHttpClient::setResponseFactory()` method to be able to set response factory after client creating
8+
49
5.3
510
---
611

MockHttpClient.php

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,15 @@ class MockHttpClient implements HttpClientInterface
3535
* @param callable|callable[]|ResponseInterface|ResponseInterface[]|iterable|null $responseFactory
3636
*/
3737
public function __construct(callable|iterable|ResponseInterface $responseFactory = null, ?string $baseUri = 'https://example.com')
38+
{
39+
$this->setResponseFactory($responseFactory);
40+
$this->defaultOptions['base_uri'] = $baseUri;
41+
}
42+
43+
/**
44+
* @param callable|callable[]|ResponseInterface|ResponseInterface[]|iterable|null $responseFactory
45+
*/
46+
public function setResponseFactory($responseFactory): void
3847
{
3948
if ($responseFactory instanceof ResponseInterface) {
4049
$responseFactory = [$responseFactory];
@@ -47,7 +56,6 @@ public function __construct(callable|iterable|ResponseInterface $responseFactory
4756
}
4857

4958
$this->responseFactory = !\is_callable($responseFactory) || $responseFactory instanceof \Closure ? $responseFactory : \Closure::fromCallable($responseFactory);
50-
$this->defaultOptions['base_uri'] = $baseUri;
5159
}
5260

5361
/**

Tests/MockHttpClientTest.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,7 @@ protected function getHttpClient(string $testCase): HttpClientInterface
291291
case 'testReentrantBufferCallback':
292292
case 'testThrowingBufferCallback':
293293
case 'testInfoOnCanceledResponse':
294+
case 'testChangeResponseFactory':
294295
$responses[] = new MockResponse($body, ['response_headers' => $headers]);
295296
break;
296297

@@ -387,4 +388,16 @@ public function testHttp2PushVulcainWithUnusedResponse()
387388
{
388389
$this->markTestSkipped('MockHttpClient doesn\'t support HTTP/2 PUSH.');
389390
}
391+
392+
public function testChangeResponseFactory()
393+
{
394+
/* @var MockHttpClient $client */
395+
$client = $this->getHttpClient(__METHOD__);
396+
$expectedBody = '{"foo": "bar"}';
397+
$client->setResponseFactory(new MockResponse($expectedBody));
398+
399+
$response = $client->request('GET', 'http://localhost:8057');
400+
401+
$this->assertSame($expectedBody, $response->getContent());
402+
}
390403
}

0 commit comments

Comments
 (0)