2014-09-12 2 views
1

FeatureContext.php에서 심포니 매개 변수 (예 : parameters.yml)에 액세스하려면 어떻게해야합니까?FeatureContext 내 symfony 매개 변수에 액세스

컨트롤러에서 $this->getContainer()->getParameter('currency');을 사용하면 값을 얻을 수 있으며 FeatureContext과 동일한 작업을 수행하고 싶습니다. 어떻게하면 아래 코드를 만들 수 있습니까? 사전에

덕분에

나는 어떤 식 으로든이 예제 작품을 만들고 싶어 : 그냥 참조

namespace Football\TeamBundle\Features\Context; 

use Behat\MinkExtension\Context\MinkContext; 

class FeatureContext extends MinkContext 
{ 
    /** 
    * @Then /^I print currency$/ 
    */ 
    public function iSeeCurrency() 
    { 
     echo $this->getContainer()->getParameter('currency'); 
     sleep(60); 
    } 
} 

;

use Behat\MinkExtension\Context\MinkContext; 
use Behat\Symfony2Extension\Context\KernelDictionary; 

class FeatureContext extends MinkContext 
{ 
    private $kernel; 
    use KernelDictionary; 

    public function setKernel($kernel) 
    { 
     $this->kernel = $kernel; 
    } 

    /** 
    * @Then /^I want to say hello to "([^"]*)"$/ 
    * @param $seconds 
    */ 
    public function iSayHello($name) 
    { 
     $container = $this->getContainer(); 
     $behatService = $container->get('behat_service'); 

     echo $behatService->sayHello($name); 
     sleep(60); 
    } 
} 

구성 파일 : 내이 예 심포니 서비스에 액세스하기위한 잘 작동

config.yml (나뿐만 아니라 _dev.yml 및 _prod.yml 환경이)

imports: 
    - { resource: parameters.yml } 
    - { resource: security.yml } 
    - { resource: globals.yml } 

config_test.yml

imports: 
    - { resource: config.yml } 
    - { resource: parameters_test.yml } 

parameters_test.yml

parameters: 
    database_driver: pdo_mysql 
    database_host: 127.0.0.1 
    database_port: null 
    database_name: symfony_test 
    database_user: root 
    database_password: root 

globals.yml

parameters: 
    currency: EUR.USD.GBP 
+0

당신은 같은 매개 변수를 가지고 있나요 기능 CONTEXT 모든 환경의 파일? (prod/dev/test) – pbenard

+0

질문에 따라 위의 게시물을 업데이트했습니다. – BentCoder

답변

5

use Behat\MinkExtension\Context\MinkContext; 
use Behat\Symfony2Extension\Context\KernelDictionary; 

class FeatureContext extends MinkContext 
{ 
    private $kernel; 
    use KernelDictionary; 

    public function setKernel($kernel) 
    { 
     $this->kernel = $kernel; 
    } 

    /** 
    * @Then /^I access only currency parameter$/ 
    */ 
    public function printCurrency() 
    { 
     $container = $this->getContainer(); 
     echo $container->getParameter('currency'); 
    } 
} 
+0

멋진 트릭. Behat 3.x에서 성공을 시도했습니다. AppBundle \ Features \ Context \ FeatureContext와 Behat \ Symfony2Extension \ Context \ KernelDictionary는 AppBundl의 구성에서 동일한 속성 ($ kernel)을 정의합니다. 전자의 경우 [Symfony \ Component \ Debug \ Exception \ ContextErrorException] \ 기능 \ 컨텍스트 \ FeatureContext. 유지 보수성을 개선하기 위해 특성의 접근 자 메서드를 대신 사용하는 것이 좋습니다. 클래스 구성 오류. 그래서이 오류를 해결하기 위해 스 니펫에서'private $ kernel'을 삭제했습니다. – Ronan