diff --git a/clients/mock-client.rst b/clients/mock-client.rst index 3e7e010..ecf3e74 100644 --- a/clients/mock-client.rst +++ b/clients/mock-client.rst @@ -140,4 +140,9 @@ Or set a default exception:: } } + +.. hint:: + + If you're using the :doc:`/integrations/symfony-bundle`, the mock client is available as a service with ``httplug.client.mock`` id. + .. include:: includes/further-reading-async.inc diff --git a/integrations/symfony-bundle.rst b/integrations/symfony-bundle.rst index 2d2241a..807283b 100644 --- a/integrations/symfony-bundle.rst +++ b/integrations/symfony-bundle.rst @@ -205,6 +205,7 @@ services are: * ``httplug.factory.guzzle6`` * ``httplug.factory.react`` * ``httplug.factory.socket`` +* ``httplug.factory.mock`` (Install ``php-http/mock-client`` first) Plugins ``````` @@ -342,6 +343,34 @@ The only steps they need is ``require`` one of the adapter implementations in their projects ``composer.json`` and instantiating the ``HttplugBundle`` in their kernel. +Mock Responses In Functional Tests +`````````````````````````````````` + +First thing to do is add the :doc:`php-http/mock-client ` to your ``require-dev`` section. +Then, use the mock client factory in your test environment configuration: + +.. code-block:: yaml + + # config_test.yml + httplug: + clients: + my_awesome_client: + factory: 'httplug.factory.mock' # replace factory + +To mock a response in your tests, do: + +.. code-block:: php + + // SomeWebTestCase.php + $client = static::createClient(); + + // If your test has the client (BrowserKit) make multiple requests, you need to disable reboot as the kernel is rebooted on each request. + // $client->disableReboot(); + + $response = $this->createMock('Psr\Http\Message\ResponseInterface'); + $response->method('getBody')->willReturn(/* Psr\Http\Message\Interface instance containing expected response content. */); + $client->getContainer()->get('httplug.client.mock')->addResponse($response); + .. |clearfloat| raw:: html