首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何以编程方式设置karate.env?

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

Stack Overflow用户
提问于 2018-09-16 07:43:54
回答 1查看 2.3K关注 0票数 3

我正在尝试通过netty服务器设置karate.env,并响应所使用的环境。使用java karate.env对system.setProperty进行的更新没有反映在功能文件中。但是java已经正确地更新了system.setProperty。

任何输入都会有帮助。谢谢。

代码语言:javascript
复制
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));
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-16 09:33:17

编辑:没有注意到您正在询问服务器端(netty)。

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

当您启动netty服务器时,您可以选择传递一个Java Map参数,并且所有的键和值都将在服务器端特性文件中可用。所以,您所需要做的就是在这个karateEnv中传递一个类似于Map的键。

代码语言:javascript
复制
server = FeatureServer.start(file, 0, false, Collections.singletonMap("karateEnv", "blah"));

更多想法请参见这个答案:https://stackoverflow.com/a/52272220/143475

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52352038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档