使用导出BEHAT_PARAMS

时间:2018-09-21 11:35:25

标签: php behat

我正在尝试使用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()

..我该如何解决?

1 个答案:

答案 0 :(得分:1)

您只需要从yaml文件中删除my_setting 因为它取代了所有环境变量

通过您提供的文档链接

  

为了在环境变量中指定参数,该值必须在behat.yml中不存在