Каратэ: Замена нескольких ключевых значений

#karate

Вопрос:

У меня есть следующий ответ, и я пытаюсь заменить деталь, если значок-url, т. е. заменить test.com чтобы prod.com.

 [
  {
    "_": {
      "name": "FA",
      "icon-url": "https://test.com/static/images/air/partner.png"
    },
    "@": {
      "code": "00"
    }
  },
  {
    "_": {
      "name": "DA",
      "icon-url": "https://test.com/static/images/air/partner.png"
    },
    "@": {
      "code": "0D"
    }
  },
  {
    "_": {
      "name": "JC",
      "icon-url": "https://test.com/static/images/air/partner.png"
    },
    "@": {
      "code": "0J"
    }
  },
  {
    "_": {
      "name": "AG",
      "icon-url": "https://test.com/static/images/air/partner.png"
    },
    "@": {
      "code": "1A"
    }
  },
  {
    "_": {
      "name": "AI",
      "icon-url": "https://test.com/static/images/airline/partner.png"
    },
    "@": {
      "code": "1B"
    }
  }]
 

Я попытался использовать следующую функцию, но это не работает:

 * def iconurl = 'prod.com'

* def replaceEnv = function(x){ if (x['icon-url']) x['icon-url'] = x['icon-url'].replace('test.com', iconurl); return x }

* def convertedExpectation = karate.map(result, replaceEnv) // result refers to the response above

 

Пожалуйста, взгляните на код и объясните мне, что в нем не так.

Ответ №1:

Вот, пожалуйста, обратите внимание, что x._['icon-url'] это то же самое, что x['_']['icon-url']

 * def fun = function(x){ var temp = x._['icon-url']; x._['icon-url'] = temp.replace('test.com', 'prod.com'); return x }
 

Комментарии:

1. Спасибо, Питер! Еще одно уточнение, пожалуйста. Я забыл упомянуть. что у меня есть переменная * def env. и я хочу поставить условие if в зависимости от env. Если вы предложите, я могу задать новый вопрос.

2. @user1873274 новые вопросы, пожалуйста