Я новичок в 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);
}
}
Если я передам параметры inline в 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?