空手道 - 条件 if 和包含 when 响应可以是 json 或 html

Karate - Conditional if and contains when response can be either json or html

我正在发出请求,其中响应可以 return 编辑为 Json 或 HTML。

我正在尝试编写一个基于 html 情况的条件,其中如果响应包含字符串 'my string',则调用另一个功能文件。我已尝试阅读有关 conditional logic, and contains 的文档,但是,我仍然遇到问题。

以下是我正在执行的步骤:

Given url 'someUrl'
When method get
Then status 200

# 响应可以 return 一个 json 类似于这样的对象:

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

#响应可以return这个HTML:

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

# 现在我想创建一个 if 条件,说明响应是否包含字符串 'my string',然后调用另一个功能文件。

我想做这样的事情,但这不起作用:

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

我会得到这样的错误:

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

实现此目标的最佳方法是什么?如果 Json 对象被 returned -> 什么也不做。如果 html 是 returned -> 调用其他功能文件。 在此先感谢您。

给你:

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

现在您可以进行任何类型的条件调用。