[英]Karate environment value not getting set in config json
我有 config-base.js 正在加載“env_data.json”文件。 config-base.js 中的 java 腳本未按預期設置配置中的值。 我正在嘗試收集 common 和 appA parentElement 下的字段列表以及配置 Json 下的設置。我無法實現。
我通過 CLI 命令將appName作為“ appA ”傳遞,並將env作為“ uat ”傳遞,如下所示java -cp karate:. -Dkarate.config.dir=. -Dkarate.appName=appA -jar karate.jar myFeature.feature -T 1 -t @smoke -e uat
java -cp karate:. -Dkarate.config.dir=. -Dkarate.appName=appA -jar karate.jar myFeature.feature -T 1 -t @smoke -e uat
我正在嘗試通過 JS 構建配置 JSON,如下所示。
config {
baseUrl : 'http://uat.someurl.com'
parameterX : 'x2',
parameterY :'y2'
someOtherBackendUrlA : 'http://uat.appA.com'
parameterA : 'a2',
parameterB :'b2'
}
我的 env_data.js 是這樣的
[{
appName : 'common',
data: {
uat: {
baseUrl : 'http://uat.someurl.com'
parameterX : 'x2',
parameterY :'y2'
}
},{
appName : 'appA',
data: {
uat: {
someOtherBackendUrlA : 'http://uat.appA.com'
parameterA : 'a2',
parameterB :'b2'
}
}}]
我的 karate-base.js 是這樣寫的
function fn() { var env = karate.env; karate.log('karate.env system property was:', env); if (;env) { env = 'dev'. } var listOfApplications = read('./env_data;json'); var config = {}: switch (env) { case "uat"; for (var i = 0. i < listOfApplications;lenght; i++) { var appObject = listOfApplications[i]. if (karate.properties['karate.appName'] == appObject.appName) { config = appObject;data[env]. } else if ('common' == appObject.appName) { config.map(element => { element.baseUrl = appObject.data[env];baseUrl; } } break. } karate,configure('connectTimeout'; 5000). karate,configure('readTimeout'; 5000); return config; }
我可以理解,我沒有在 else 條件下正確映射配置值。 我試過 map 和 foreach。 但是對於這兩個函數,我得到錯誤org.graalvm.polyglotException:TypeError: config.map is not a funtion
我喜歡構建我的配置 JSON 以及每個應用程序值的通用參數。 請說明我該如何解決這個問題。
我已經通過以下代碼片段解決了這個問題。
fn(); function fn() { const env = 'uat'; const userInput = 'appA'; var listOfApplications = [ { "appName":"common", "data":{ "uat":{ "baseUrl":"http://commonurl.com", "parameterX":"x", "parameterY":"y" } } }, { "appName":"appA", "data":{ "uat":{ "baseUrl":"http://uat.appA.com", "parameterA":"a", "parameterB":"b" } } } ]; var config={}; for (var i = 0; i < listOfApplications.length; i++) { if (userInput == listOfApplications[i].appName) { config[userInput] = {...listOfApplications[i].data[env]}; }else if ('common' == listOfApplications[i].appName) { config = {...listOfApplications[i].data[env]}; } } //console.log(config); console.log(JSON.stringify(config)); return config; }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.