【发布时间】:2023-03-30 02:18:01
【问题描述】:
我正在尝试使用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] “testwork”下无法识别的选项“my_settings”
异常跟踪: Symfony\Component\Config\Definition\ArrayNode->normalizeValue() at /sites/scorecards/vendor/symfony/config/Definition/BaseNode.php:368 Symfony\Component\Config\Definition\BaseNode->normalize() at /sites/scorecards/vendor/symfony/config/Definition/Processor.php:35 Symfony\Component\Config\Definition\Processor->process() at /sites/scorecards/vendor/behat/behat/src/Behat/Testwork/ServiceContainer/ContainerLoader.php:81 Behat\Testwork\ServiceContainer\ContainerLoader->processConfig() 在 /sites/scorecards/vendor/behat/behat/src/Behat/Testwork/ServiceContainer/ContainerLoader.php:65 Behat\Testwork\ServiceContainer\ContainerLoader->load() at /sites/scorecards/vendor/behat/behat/src/Behat/Testwork/Cli/Application.php:185 Behat\Testwork\Cli\Application->createContainer() 在 /sites/scorecards/vendor/behat/behat/src/Behat/Testwork/Cli/Application.php:161 Behat\Testwork\Cli\Application->createCommand() 在 /sites/scorecards/vendor/behat/behat/src/Behat/Testwork/Cli/Application.php:122 Behat\Testwork\Cli\Application->doRun() at /sites/scorecards/vendor/symfony/console/Application.php:148 Symfony\Component\Console\Application->run() at /sites/scorecards/vendor/behat/behat/bin/behat:34
.. 我该如何解决这个问题?
【问题讨论】:
-
可能是错误的,但是您在环境变量上使用了密钥
DomainContext,然后在代码中查找MyContext,可能是这样吗? -
@gvf 简而言之 MyContext 就是 DomainContext。我已经更新了问题,以便消除歧义。