Перезаписать параметры переменной среды при экспорте BEHAT_PARAMS - PullRequest
0 голосов
/ 21 сентября 2018

Я пытаюсь использовать 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"}}'

Тогда я получуэта ошибка:

В строке 311 ArrayNode.php:

[Symfony \ Component \ Config \ Definition \ Exception \ InvalidConfigurationException] Нераспознанная опция "my_settings" в разделе "testwork"

Трассировка исключений: Symfony \ Component \ Config \ Definition \ ArrayNode-> normalizeValue () в /sites/scorecards/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/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 () в / 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 () в / sites/scorecards/vendor/symfony/console/Application.php:148 Symfony \ Component \ Console \ Application-> run () в / sites / Scorecards / vendor / behat / behat / bin / behat: 34

.. как я могу это исправить?

1 Ответ

0 голосов
/ 21 сентября 2018

вам просто нужно удалить my_setting из вашего файла yaml, поскольку он заменяет любую переменную среды

из предоставленной вами ссылки на документацию

, чтобы указать параметрв переменной окружения значение не должно существовать в вашем behat.yml

...