(상황을 설명하겠습니다. 누군가 내가 원하는 것을 공략 할 수있는 더 나은 방법을 알고 있습니다.) 사용Behat + symfony2 액세스 컨테이너 매개 변수는 사용자 정의 확장자로 설정합니다.
Symfony2 + Behat + Symfony2Extension + 밍크 +
우리는 시나리오 중에 방문 할 것입니다 여러 URL과 함께 응용 프로그램이 있습니다.
FeatureContext __construct 메서드에서 보낸 매개 변수를 사용하는 것을 이해하지만, 내가하려고하는 것은 behat.yml 파일의 url을 설정하여 사용자 지정 컨텍스트에서 사용할 수 있습니다. URL을 방문하십시오.
class Extension implements ExtensionInterface
{
/**
* Loads a specific configuration.
*
* @param array $config Extension configuration hash (from behat.yml)
* @param ContainerBuilder $container ContainerBuilder instance
*/
public function load(array $config, ContainerBuilder $container)
{
$container->setParameter('url_one', $config['url_one']);
$container->setParameter('url_two', $config['url_two']);
}
/**
* Setups configuration for current extension.
*
* @param ArrayNodeDefinition $builder
*/
public function getConfig(ArrayNodeDefinition $builder)
{
$builder->
children()->
scalarNode('one_url')->
isRequired()->
end()->
scalarNode('two_url')->
isRequired()->
end()->
end();
}
code continues....
을 그리고 내 behat.yml는 다음과 같습니다 : 다음과 같이 확장 I를 작동하는 방법을 살펴보면
는 설치 의존성 주입이
내 FeatureContext.php 클래스 I에서 지금default:
extensions:
Behat\MinkExtension\Extension:
goutte: ~
selenium2: ~
Behat\Symfony2Extension\Extension: ~
Acme\AcmeExtension\Extension:
url_one: 'http://example1.com'
url_two: 'http:/example2.com'
다음을 원합니다 :
$url = $kernel->getContainer()->getParameter('url_one');
그러나 이것은 작동하지 않습니다. 내 Symfony2 응용 프로그램의 매개 변수는 symfony2extension을 활성화 한 이후로 예상됩니다. 하지만 확장 클래스에서 매개 변수 나 서비스에 액세스 할 수 없습니다.
(로드 메서드의 Extension 클래스에 있고 매개 변수를 호출하면 반환되지만 설정되어 있음을 알 수 있지만 다른 컨테이너로 설정해야한다는 점에 유의하십시오.)
우선 가능합니까? 그리고 만약 그렇다면 그것을하기 위해 무엇을해야합니까.
도움을 주셔서 감사합니다.
감사합니다 나는 당신의 제안을 추가하며 노력하고 있습니다 – user2076907