簡體   English   中英

空手道環境值未在配置中設置 json

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM