Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony behat.yml中的参数_Symfony_Behat - Fatal编程技术网

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了,但感谢您添加这个参数,因为它可能对其他人有用!