(我將解釋情況,讓別人知道更好的方法來幫助我想做的事)。Behat + symfony2訪問容器參數在自定義擴展中設置
使用的Symfony2 +貝哈特+ Symfony2Extension +水貂+
我們有將場景中被訪問多個網址的應用程序。
我明白,您使用從FeatureContext __construct方法發送的參數,但我想要做的是在behat.yml文件中設置網址,以便我們可以在我們的自定義上下文中使用它們訪問網址。
望着擴展是如何工作的我已經設置了依賴注入如下:
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看起來是這樣的:
default:
extensions:
Behat\MinkExtension\Extension:
goutte: ~
selenium2: ~
Behat\Symfony2Extension\Extension: ~
Acme\AcmeExtension\Extension:
url_one: 'http://example1.com'
url_two: 'http:/example2.com'
我FeatureContext.php I類
現在想要做到以下幾點:
$url = $kernel->getContainer()->getParameter('url_one');
但這不工作,它返回來自我的Symfony2應用程序的參數,這是因爲我已經啓用了symfony2extension。但我無法從擴展類訪問參數或服務。 (請注意,如果我在加載方法中的擴展類中,並且我調用參數,我只是將其設置爲返回,所以我知道它已設置,但它必須設置爲不同的容器?)
首先這可能嗎?如果是的話,我該怎麼做才能使它工作。
非常感謝您的幫助。
感謝我加入您的建議和它工作 – user2076907 2013-02-16 21:00:00