我正在尝试使用environment-variable-behat-params覆盖我的YAML
中的以下值:
my_profile:
suites:
domain:
contexts:
- MyContext:
- my_config:
setting_setting: data
other_setting_setting: other_data
这是导出命令:
export BEHAT_PARAMS='{"suites":{"domain":{"contexts":{"MyContext":{"my_config":{"my_setting":"on"}}}}}}'
这是PHP代码:
/** @BeforeSuite */
public static function prepare(BeforeSuiteScope $scope) {
$my_settings = $scope->getEnvironment()
->getContextClassesWithArguments()['MyContext'][0];
if (isset($my_settings['my_setting']) && $my_settings['my_setting'] == 'on') {
//do something here
}
}
似乎与文档相符,但是my_setting
保留为off
,而不是更新为on
。
如果我尝试使用位于my_profile
根级别的密钥,如下所示:
my_profile:
my_config:
setting_setting: data
这是导出命令:
export BEHAT_PARAMS='{"my_config":{"my_setting":"on"}}'
然后我得到这个错误:
在ArrayNode.php第311行中:
[Symfony \ Component \ Config \ Definition \ Exception \ InvalidConfigurationException] “测试工作”下的无法识别的选项“ my_settings”
异常跟踪: 在/sites/scorecards/vendor/symfony/config/Definition/BaseNode.php:368上的Symfony \ Component \ Config \ Definition \ ArrayNode-> normalizeValue() Symfony \ Component \ Config \ Definition \ BaseNode-> normalize()在/sites/scorecards/vendor/symfony/config/Definition/Processor.php:35 在/sites/scorecards/vendor/behat/behat/src/Behat/Testwork/ServiceContainer/ContainerLoader.php:81上的Symfony \ Component \ Config \ Definition \ Processor-> process() 在/sites/scorecards/vendor/behat/behat/src/Behat/Testwork/ServiceContainer/ContainerLoader.php:65上的Behat \ Testwork \ ServiceContainer \ ContainerLoader-> processConfig() 在/sites/scorecards/vendor/behat/behat/src/Behat/Testwork/Cli/Application.php:185上的Behat \ Testwork \ ServiceContainer \ ContainerLoader-> load() 在/sites/scorecards/vendor/behat/behat/src/Behat/Testwork/Cli/Application.php:161上的Behat \ Testwork \ Cli \ Application-> createContainer() 在/sites/scorecards/vendor/behat/behat/src/Behat/Testwork/Cli/Application.php:122上的Behat \ Testwork \ Cli \ Application-> createCommand() Behat \ Testwork \ Cli \ Application-> doRun()位于/sites/scorecards/vendor/symfony/console/Application.php:148 在/ sites / scorecards / vendor / behat / behat / bin / bin / behat:34
上的Symfony \ Component \ Console \ Application-> run()
..我该如何解决?
答案 0 :(得分:1)
您只需要从yaml文件中删除my_setting
因为它取代了所有环境变量
通过您提供的文档链接
为了在环境变量中指定参数,该值必须在behat.yml中不存在