Каратэ — условное, если и содержит, когда ответ может быть либо json, либо html

#html #json #if-statement #contains #karate

#HTML #json #if-оператор #содержит #каратэ

Вопрос:

Я делаю запрос, в котором ответ может быть возвращен либо в формате Json, либо в формате HTML.

Я пытаюсь написать условие, основанное на случае html, в котором, если ответ содержит строку «моя строка», затем вызовите другой функциональный файл. Я попытался прочитать документацию по условной логике и содержит, однако у меня все еще возникают проблемы.

Вот шаги, которые я предпринимаю:

 Given url 'someUrl'
When method get
Then status 200
  

# Ответ может возвращать объект json, подобный этому:

 * def jsonResponse=
"""
{
  "del_date_range": "new Object",
  "twoday_date": null,
  "sameday": null,
  "calendar_end_day": 23,
  "zip_error_message_id": null
}
"""
  

# Ответ может возвращать этот HTML:

 * def htmlResponse=
"""
<span class="text">
    <p>my string</p>
</span>
"""
  

# Теперь я хочу создать условие if, в котором указано, содержит ли ответ строку «моя строка», а затем вызвать другой функциональный файл.

Я хочу сделать что-то подобное, но это не работает:

  * if (response contains 'my string') karate.call('calledFeature.feature')
  

Я получу сообщение об ошибке, подобное этому:

 javax.script.ScriptException: <eval>:1:13 Expected ) but found contains
  

Каков наилучший способ добиться этого? Если объект Json возвращается -> ничего не делать. Если возвращается html -> вызовите другой функциональный файл.Заранее благодарю вас.

Ответ №1:

Вот и все:

 * string temp = response
* def isHtml = temp.startsWith('<')
  

Теперь вы можете выполнять любые условные вызовы, какие захотите.