php – Behat 3 – 将参数(从导入的文件)传递给FeatureContext构造函数
作者:互联网
我是Behat和YAML的新手,我在将大型参数数组传递给FeatureContext构造函数时遇到了麻烦.
使用Behat 2,以下工作正常:
behat.yml(为方便起见缩短):
default:
context:
extensions:
Behat\MinkExtension\Extension:
base_url: 'http://mysite.local'
goutte: ~
selenium2: ~
...
imports:
- config/data/mydata.yml
和mydata.yml:
default:
context:
parameters:
some_long_array:
'key1': 'value1'
'key2': 'value2'
...
我可以有很多这样导入的参数文件.
使用Behat 3 – 我尝试使用以下内容实现相同的功能
behat.yml(缩写):
default:
suites:
default:
contexts:
- FeatureContext
extensions:
Behat\MinkExtension:
base_url: 'http://mysite.local'
goutte: ~
selenium2: ~
...
imports:
- config/data/mydata.yml
和mydata.yml:
default:
suites:
default:
contexts:
- FeatureContext:
parameters:
some_long_array:
'key1': 'value1'
'key2': 'value2'
...
这不起作用,没有任何东西传递给构造函数.
Recoverable fatal error: Argument 1 passed to
FeatureContext::__construct() must be of the type array, none given in
FeatureContext->__construct()
我的FeatureContext类如下所示:
class FeatureContext implements SnippetAcceptingContext
{
/**
* Initializes context.
*
* Every scenario gets its own context instance.
* You can also pass arbitrary arguments to the
* context constructor through behat.yml.
*/
public function __construct(array $parameters)
{
var_dump($parameters);
}
}
如果我在behat.yml中传入内联参数(而不是在导入的文件中),一切正常:
default:
suites:
default:
contexts:
- FeatureContext:
parameters:
some_long_array:
'key1': 'value1'
'key2': 'value2'
extensions:
Behat\MinkExtension:
base_url: 'http://mysite.local'
goutte: ~
selenium2: ~
...
并且测试运行,我可以按预期看到数组.问题是我有几个大的参数数组,在behat.yml文件中指定它们是不切实际的.
如何使用Behat 3在外部文件中指定大型参数数组?
解决方法:
你是如此亲密的人.我能够这样做:
default:
autoload: [ %paths.base%/contexts ]
extensions:
Behat\MinkExtension:
base_url: http://qa.api.somesite.com
sessions:
default:
selenium2: ~
Sanpi\Behatch\Extension: ~
suites:
default:
paths: [ %paths.base%/features ]
filters:
contexts:
- FeatureContext
- Behat\MinkExtension\Context\MinkContext
frontend:
paths: [ %paths.base%/features/frontend ]
filters:
contexts:
- FeatureContext:
parameters:
environment: qa
api_url: http://api.somesite.com
login: some_login
key: 409jfa94k4tj
- Behat\MinkExtension\Context\MinkContext
- behatch:browser
如果你在“前端”套件下注意到我有上下文“FeatureContext”.下面是FeatureContext类的构造函数所期望的参数的名称.然后它会自动将其转换为关联数组.
标签:php,yaml,behat 来源: https://codeday.me/bug/20190624/1276059.html