Есть ли способ передать обратные вызовы в качестве аргументов конструктора в файлах Symfony YAML? - PullRequest
0 голосов
/ 05 августа 2020

Для среды CI я перезаписываю ответы HTTP-клиента.

Это работает:

symfony.mock_http_response:
    class: Symfony\Component\HttpClient\Response\MockResponse
    arguments:
        - '{
               "data": "some response data"
           }'


Symfony\Contracts\HttpClient\HttpClientInterface:
    class: Symfony\Component\HttpClient\MockHttpClient
    arguments:
        - '@symfony.mock_http_response'

Однако мне нравится выбирать подход Dynami c с обратным вызовом, описанный здесь: https://symfony.com/doc/current/http_client.html#testing -http-clients-and-answers

Таким образом, я надеюсь, что смогу определять разные ответы в зависимости от выполняемого мной теста Behat.

Возникает вопрос: как передать функцию обратного вызова в качестве аргумента конструктора в MockHttpClient в файле YAML?

1 Ответ

1 голос
/ 06 августа 2020

Вы не можете напрямую. Даже если вы объявите свою службу в php, контейнер не может быть сброшен, если объект присутствует внутри определения службы.

Однако вы можете создать свою службу через фабрику, которая создает обратный вызов, и внедрить его в экземпляр фиктивного клиента.

...