空手道阵列字段成为对象当从JS函数返回

问题描述 投票:1回答:2

我想比较的响应与预定义的JSON(预期)由JS函数生成。 JS:

    function(fleetId) {
        var result = {};
        result.name = "TestConnection";
        result.fleetId = fleetId;
        result.connectionConfigDefault = { "configParameters": [{ "keyName": "N/A", "value": "testValue" }], "id": 4 }
        return result;
    }

测试:

...
Then match connection.response ==
                                       """
                                           {
                                            connectionConfigDefault: '#(connectionJson.connectionConfigDefault)',
                                            fleetId: '#(connectionJson.fleetId)',
                                            id: '#number',
                                            name: '#(connectionJson.name)'
                                           }
                                       """

JS回报:

"connectionConfigDefault": {
    "configParameters": { "0": { "keyName": "N/A", "value": "testValue" } }
    }

而不是预期的:

"connectionConfigDefault": { 
"configParameters": [{ "keyName": "N/A", "value": "testValue" }]
}

附:我看过类似question,但答案没有帮助我解决问题。

arrays object karate
2个回答
0
投票

你可以做1两件事..在JavaScript中返回的JSON它使用configParameters = JSON.stringify(configParameters)现在称之为从功能文件这一功能转换为字符串,JSON变量之前。

In function "function(fleetId)"

返回结果之前,将其转换为字符串键入

result = JSON.stringify(result)

在这里您将调用来自空手道该函数

* json fleetId = function(fleetId)
* print fleetId

我希望这将解决你的问题


1
投票

是的,有在您通常从来没有碰到,除非你开始做JS数组嵌套的JDK这个奇怪的错误:https://github.com/intuit/karate/blob/master/karate-junit4/src/test/java/com/intuit/karate/junit4/demos/js-arrays.feature#L44

这里的解决方法是使用空手道不是JS做JSON建设:

编辑:看到使用read()下方,而不是“在线”:

# * def conf = { "configParameters": [{ "keyName": "N/A", "value": "testValue" }], "id": 4 }
* def fun = 
"""
function(fleetId) {
    var result = {};
    result.name = "TestConnection";
    result.fleetId = fleetId;
    var conf = read('conf.json');
    result.connectionConfigDefault = conf;
    return result;
}
"""

由于空手道有这么多漂亮的方式,你为什么不使用这些:

* def fleetId = 1

* set temp
| path    | value            |
| name    | 'TestConnection' |
| fleetId | fleetId          |
| connectionConfigDefault | { "configParameters": [{ "keyName": "N/A", "value": "testValue" }], "id": 4 } |

* print temp
© www.soinside.com 2019 - 2024. All rights reserved.