gpt4 book ai didi

karate - 如何以编程方式设置 karate.env ?

转载 作者:行者123 更新时间:2023-12-02 05:43:45 27 4
gpt4 key购买 nike

我正在尝试通过 netty 服务器设置 karate.env 并响应使用的环境。使用 java system.setProperty 对 karate.env 进行的更新未反射(reflect)在功能文件中。但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));
}

最佳答案

EDIT: did not notice you were asking about the server side (netty).

不,您不能依赖像这样从客户端传递到服务器的karate.env。您应该做的是,当您开始测试时,客户端和服务器都应该了解环境。您已经知道如何为客户端执行此操作 (karate-config.js)。

当你启动netty服务器时,你可以选择传递一个Java Map参数,并且所有的键和值都将在服务器端功能文件中可用。因此,您所需要做的就是在此 Map 中传递一个像 karateEnv 这样的 key 。

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

另请参阅此答案以获取更多想法:https://stackoverflow.com/a/52272220/143475

关于karate - 如何以编程方式设置 karate.env ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52352038/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com