Как установить karate.env программно? - PullRequest
0 голосов
/ 16 сентября 2018

Я пытаюсь установить karate.env через сервер netty и ответить, какая среда используется. Обновление karate.env с использованием java system.setProperty не отражается в файлах объектов. Но Java правильно обновил system.setProperty.

Любой ввод поможет. Спасибо.

Background:
* def setEnvVar = Java.type('CMA_Release.Java_Lib.setEnvVar')

Scenario: pathMatches('/orangeFMW/psd2_cma/cctoken') && methodIs('post')
* call setEnvVar.set('karate.env',request.Environment)
* print request.Environment
* print karate.env
# * call read('classpath:karate-config.js')
# few other operations
* def response = "Selected Environment : " + karate.env

Response : Selected Environment : null

Server log
scenario matched: pathMatches('/orangeFMW/psd2_cma/cctoken') && 
methodIs('post')
UAT // Java update the value correctly
not a js function or feature file: 
setEnvVar.set('karate.env',request.Environment) - [type: NULL, value: null]
[print] UAT
[print] 

Java class
public class setEnvVar {

public static void set(String key, String value){
    System.setProperty(key, value);
    System.out.println(System.getProperty(key,value));
}

1 Ответ

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

РЕДАКТИРОВАТЬ: не заметил, что вы спрашиваете о серверной части (нетто).

Нет, вы не можете полагаться на karate.env, передаваемый таким образом от клиента к серверу. Что вы должны сделать, когда вы начнете свой тест, ОБА , клиент и сервер должны знать об окружающей среде. Вы уже знаете, как сделать это для клиента (karate-config.js).

Когда вы запускаете netty-сервер, вы можете при желании передать аргумент Java Map, и все ключи и значения будут доступны в файле возможностей на стороне сервера. Так что все, что вам нужно сделать, это передать ключ типа karateEnv в этом Map.

server = FeatureServer.start(file, 0, false, Collections.singletonMap("karateEnv", "blah"));

Также см. Этот ответ для большего количества идей: https://stackoverflow.com/a/52272220/143475

...