空手道循环 returns Json array as objects {}

Karate loop returns Json array as objects {}

我正在使用空手道循环来生成动态 Json。 我的测试数据之一包含对象中的数组。当我对此数据使用空手道循环时,数组作为对象返回。

* def fun = function(i){ return { "name": "userName"+ i, "email": "Tester@test.com", "id": "ID"+i, "testSheet": [{"sheetId" : "123"}]} }
* def jsonBody = karate.repeat(3, fun)
* print jsonBody

我预计如下:

[
  {
    "name": "userName0",
    "email": "Tester@test.com",
    "id": "ID1",
   "testSheet": [
        {
          "sheetId": "123"
        }
      ]
  }
]

但是returns这个

[
  {
    "name": "userName0",
    "email": "Tester@test.com",
    "id": "ID1",
   "testSheet": {
       "0": {
          "sheetId": "123"
        }
      }
  }
]

预期路径:jsonBody[0].testSheet[0].sheetId

实际路径:jsonBody[0].testSheet.0.sheetId

很遗憾,这是一个错误,将在下一个版本中修复:https://github.com/intuit/karate/issues/1187

这是解决方法。暂时在JS块外定义数组部分,使用copy:

* def testSheet = [{"sheetId" : "123"}]
* def fun = function(i){ return { "name": "userName"+ i, "email": "Tester@test.com", "id": "ID"+i, "testSheet": testSheet } }
* copy jsonBody = karate.repeat(3, fun)
* print jsonBody