【发布时间】:2015-02-28 23:00:23
【问题描述】:
我对 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'
...
这不起作用,并且没有任何东西传递给构造函数。
可恢复的致命错误:参数 1 传递给 FeatureContext::__construct() 必须是数组类型,没有给出 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 在外部文件中指定大型参数数组?
【问题讨论】:
-
您是否找到了解决您想要做的事情的方法?我面临同样的问题,现在找不到合适的东西。谢谢!