与symfony flex的Behat

时间:2017-11-20 14:51:59

标签: behat symfony-flex

我想在symfony flex中使用behat 当我在构造函数中的behat上下文文件中注入服务时,autowire不起作用。 我需要明确地将服务配置为public以在behat中使用该服务。 是否有另一种方法可以在behat上下文文件中注入服务而不公开它?

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

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

            - ImageConsumerContext:
                 dataConsumer: '@App\DataConsumer'

1 个答案:

答案 0 :(得分:1)

<强>更新

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

  

默认情况下&#34;私人服务的唯一缺点是&#34;是测试比以前更难。一些开发人员甚至在测试环境中定义了一些配置,以便在测试中公开所有服务。在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'