【问题标题】:Overwrite Environment Variable Params with export BEHAT_PARAMS使用 export BEHAT_PARAMS 覆盖环境变量参数
【发布时间】: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。我已经更新了问题,以便消除歧义。

标签: php behat


【解决方案1】:

您只需从您的 yaml 文件中删除 my_setting 因为它超越了任何环境变量

来自您提供的文档链接

为了在环境变量中指定参数,该值不能存在于您的 behat.yml 中

【讨论】:

  • 感谢您的回答,我已经尝试过了,现在$my_settings 中不存在
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多