Symfony behat.yml中的参数
我想做些什么Symfony behat.yml中的参数,symfony,behat,Symfony,Behat,我想做些什么 behat.yml - default: extensions: Behat\MinkExtension\Extension: base_url: 'my-url' 从parameters.yml提取的参数。。。这可能吗?我在parameters.yml中创建了一个mink_base_url参数,然后添加了 imports: - { resource: parameters.yml } 表现。不管我做什么,我都会得到这个
behat.yml -
default:
extensions:
Behat\MinkExtension\Extension:
base_url: 'my-url'
从parameters.yml提取的参数。。。这可能吗?我在parameters.yml中创建了一个mink_base_url参数,然后添加了
imports:
- { resource: parameters.yml }
表现。不管我做什么,我都会得到这个
[Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException]
The service "behat.mink.context.initializer" has a dependency on a non-existent parameter "mink_base_url"
Behat配置与Symfony没有任何关系。Behat确实使用Symfony的DI容器,但它是一个单独的实例
如果要实现它,您可能需要创建自己的Behat扩展来支持导入部分。如果您只想访问基本url,可以在mink启动后获得它
$this->getMinkParameter('base_url');
下面是一个例子:
class AbstractBehatContext extends MinkContext {
/**
* The base url as set behat.yml
* @var bool
*/
protected $baseUrl;
/**
* @BeforeScenario
*/
public function getBaseUrl() {
$this->baseUrl = $this->getMinkParameter('base_url');
}
}
注意,这需要能够访问Mink,因此它在
\uuu-construct
或@BeforeSuite
中不起作用。此外,在每个场景开始时都会调用@beforecasenario
,这将使它变得毫无意义。这对我使用Symfony 3很有效。只需从behat.yml
中省略base\u url
,然后从容器参数中进行设置。感谢@DanielM提供的提示
<?php
use Behat\MinkExtension\Context\MinkContext;
use Symfony\Component\DependencyInjection\ContainerInterface;
class FeatureContext extends MinkContext {
/**
* FeatureContext constructor.
* @param ContainerInterface $container
*/
public function __construct(ContainerInterface $container)
{
$this->container = $container;
}
/**
* @BeforeScenario
*/
public function setUpTestEnvironment()
{
$this->setMinkParameter('base_url', $this->container->getParameter('my_url'));
}
}
可以使用
-“%%参数%%”的%%name
双倍百分号(%)起作用。我在自己的帖子里不能说谢谢?哇…“谢谢”、“帮帮我”和其他都被认为是不正确的,因为他们没有给问题添加任何内容。有没有办法通过behat3从FeatureContext构造函数中的parameters.yml获取参数?(我使用的是symfony2extension)假设有一个Symfony参数名为my-url
,您必须使用'%my-url%'
而不是'my-url'
。我不再使用Symfony了,但感谢您添加这个参数,因为它可能对其他人有用!