有没有一种方法可以将回调作为Symfony YAML文件中的构造函数参数传递?

时间:2020-08-05 13:33:35

标签: symfony yaml behat symfony5

对于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'

但是我喜欢选择带回调的动态方法,在此处记录: https://symfony.com/doc/current/http_client.html#testing-http-clients-and-responses

这样,我希望能够根据正在运行的Behat测试来定义不同的响应。

问题是:如何在YAML文件中将回调函数作为构造函数参数传递给MockHttpClient?

1 个答案:

答案 0 :(得分:1)

您不能直接。即使您在php中声明了服务,但是如果服务定义中存在对象,也无法转储该容器。

但是,您可以通过创建回调并将其注入到模拟客户端实例的工厂来创建服务。