有没有办法在 Symfony YAML 文件中将回调作为构造函数参数传递?

Is there a way to pass callbacks as constructor arguments in Symfony YAML files?

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

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

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