代码之家  ›  专栏  ›  技术社区  ›  Barry

用导出的BEATHARPARAMS改写环境变量参数

  •  0
  • Barry  · 技术社区  · 6 年前

    我想用 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] 无法识别的选项“测试工作”下的“我的设置”

    异常跟踪: Symfony\Component\Config\Definition\ArrayNode->normalizeValue(),位于/sites/scorecard/vendor/Symfony/Config/Definition/BaseNode.php:368 Symfony\Component\Config\Definition\BaseNode->normalize(),位于/sites/scorecards/vendor/Symfony/Config/Definition/Processor.php:35 Symfony\Component\Config\Definition\Processor->process(),位于/sites/scorecard/vendor/behat/behat/src/behat/Testwork/ServiceContainer/ContainerLoader.php:81 Behat\Testwork\ServiceContainer\ContainerLoader->processConfig(),位于/sites/scorecard/vendor/Behat/Behat/src/Behat/Testwork/ServiceContainer/ContainerLoader.php:65 Behat\Testwork\ServiceContainer\ContainerLoader->load(),位于/sites/scorecard/vendor/Behat/Behat/src/Behat/Testwork/Cli/Application.php:185 Behat\Testwork\Cli\Application->createContainer(),位于/sites/scorecard/vendor/Behat/Behat/src/Behat/Testwork/Cli/Application.php:161 Behat\Testwork\Cli\Application->createCommand(),位于/sites/scorecard/vendor/Behat/Behat/src/Behat/Testwork/Cli/Application.php:122 Behat\Testwork\Cli\Application->doRun(),位于/sites/scorecard/vendor/symfony/console/Application.php:148 Symfony\Component\Console\Application->run(),位于/sites/scorecards/vendor/behat/behat/bin/behat:34

    .. 我该怎么解决?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Barry    6 年前

    你只需要移除 my_setting 从你的yaml文件 因为它超级舍弃任何环境变量

    从您提供的文档链接

    为了在环境变量中指定一个参数,该值不能存在于您的BEATH.YML中。