3

我想将 behat 与 symfony flex 一起使用当我在构造函数内的 behat 上下文文件中注入服务时,自动连线不起作用。我需要将服务显式配置为公开以使用该服务。是否有另一种方法可以在不公开的情况下在 behat 上下文文件中注入服务?

在这里我遇到以下错误:编译容器时,“App\DataConsumer”服务或别名已被删除或内联。您应该将其公开,或者直接停止使用容器并改用依赖注入。

behat.yml
   default:
     suites:
       default:
         contexts:
            - FeatureContext:
                 kernel: '@kernel'

            - ImageConsumerContext:
                 dataConsumer: '@App\DataConsumer'
4

1 回答 1

1

更新:

从 Symfony 4.1 开始,它允许从测试中获取私有服务。

“默认私有服务”唯一剩下的缺点是测试比以前更难。一些开发人员甚至在测试环境中定义了一些配置,以便在测试中公开所有服务。在 Symfony 4.1 中,我们做了同样的事情,现在测试默认允许获取私有服务。

来源:https ://symfony.com/blog/new-in-symfony-4-1-simpler-service-testing


您可以只为您的测试环境公开该服务。

补充config/services_test.yaml

services:
  ...
  test.App\DataConsumer: '@App\DataConsumer'

然后在你的 behat.yml 中:

default:
  suites:
    default:
      contexts:
        - FeatureContext:
          kernel: '@kernel'

        - ImageConsumerContext:
          dataConsumer: '@test.App\DataConsumer'
于 2018-02-26T13:50:31.177 回答