【问题标题】:How to prevent Symfony 4 service override?如何防止 Symfony 4 服务覆盖?
【发布时间】:2020-04-03 23:43:37
【问题描述】:

我有基础 /config/services.yaml,它在我的 Symfony 4.3 项目中存储了许多服务。例如:

My\Namespace\Service:
  - '@My\Namespace\Dependency'

出于测试目的,我有 config/test/test_services.yaml 在其中存储带有 'test.' 前缀的服务以测试私有服务,使其在测试环境中公开。

在 test_services.yaml 中声明的服务之一没有前缀。它的名称 (FQCN) 与 services.yaml 中定义的另一个名称相同。它们具有相同类型的不同构造函数参数。

测试一 (/config/test_services.yaml) 模拟了返回夹具数据的依赖项:

My\Namespace\Service:
  - '@My\Namespace\MockedDependency'

有没有办法防止服务覆盖在测试环境中的测试执行期间不将模拟服务替换为真实服务?

【问题讨论】:

    标签: symfony symfony4


    【解决方案1】:

    这种情况的解决方案是创建services_test.yaml 文件并将其与services.yaml 一起放在/config 文件夹下。

    在这种情况下,symfony 不会覆盖服务,并且会在测试执行期间使用services_test.yaml 中定义的服务

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-13
      • 1970-01-01
      • 2019-03-13
      • 1970-01-01
      • 1970-01-01
      • 2017-12-19
      相关资源
      最近更新 更多