2017-11-20 5 views
3

Ich möchte behath mit symfony flex verwenden Wenn ich Service in Behat Kontextdatei in Konstruktor injizieren, funktioniert der Autowire nicht. Ich muss den Dienst explizit für public konfigurieren, um diesen Dienst in behat zu verwenden. Gibt es eine andere Möglichkeit, den Service in eine Behat-Kontextdatei einzufügen, ohne sie öffentlich zu machen?Behat mit symfony flex

Hier bekomme ich unter Fehler Der "App \ DataConsumer" Service oder Alias ​​wurde entfernt oder inline, wenn der Container kompiliert wurde. Sie sollten es entweder öffentlich machen oder die Verwendung des Containers direkt beenden und stattdessen die Abhängigkeitsinjektion verwenden.

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

      - ImageConsumerContext: 
       dataConsumer: '@App\DataConsumer' 

Antwort

0

Sie können den Dienst nur für Ihre Testumgebung veröffentlichen.

In config/services_test.yaml add:

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

Dann in Ihrem behat.yml:

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

     - ImageConsumerContext: 
      dataConsumer: '@test.App\DataConsumer'