Path 空手道模拟服务器-匹配请求正文,其中包含请求中的特定字符串

Path 空手道模拟服务器-匹配请求正文,其中包含请求中的特定字符串,path,karate,Path,Karate,我有一个请求正在攻击我的模拟服务器。。。请求是json格式的,但其中一个值是大约2000多个字符的字符串。。如果字符串值(2000多个字符)包含特定的子字符串值,我希望匹配请求 例如: Scenario: pathMatches('/callService') && methodIs('post') && request.clientDescription contains 'blue eyes' (request.clientDescription

我有一个请求正在攻击我的模拟服务器。。。请求是json格式的,但其中一个值是大约2000多个字符的字符串。。如果字符串值(2000多个字符)包含特定的子字符串值,我希望匹配请求

例如:

Scenario:
   pathMatches('/callService') &&
   methodIs('post') && request.clientDescription contains 'blue eyes'
(request.clientDescription=2000个以上字符的字符串) 它似乎不喜欢关键字contains,而且我似乎找不到有关语法的任何信息,我将使用该语法搜索请求中的给定字符串,并查看它是否包含特定值


我知道我可以尝试使用“==”匹配整个字符串值,但我正在寻找一种仅在包含子字符串时匹配的方法。

这里有一个提示,无论您在
场景右侧看到什么:
是纯JavaScript,
methodIs()
等。恰好是为了方便而预定义的

所以这应该是可行的,使用

另外,请参考此答案了解其他想法:


还有一点:

当我在场景中添加“&&request.clientDescription.includes('blueeyes')”时,它似乎不太喜欢,但它确实指引了我正确的方向,我也找到了解决方案。谢谢

错误:将字符串.includes添加到方案后: com.intuit.karate-场景匹配评估失败:评估(js)失败:路径匹配(“/callService”)&& methodIs('post')&&request.clientDescription.includes('blue eyes'),javax.script.ScriptException:TypeError:request.clientDescription.includes不是第2行的函数 堆栈跟踪:jdk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptException(NashornScriptEngine.java:470)

解决方案:
  • 在后台使用karate.match定义函数
解决方案的代码示例:
酷。现在我明白了它“是纯JavaScript”,我确信这种可能性是无限的。我觉得自己没有意识到这一点很傻……这表明我在JavaScript开发方面做得不多。我太沉迷于cumber/Gherkin语法,无法对响应进行断言,但现在一切都有了意义。感谢您的快速响应。谢谢@随时都可以。另外,请阅读以下内容:好的,也许
String.contains()
会起作用。不同空手道版本的JS引擎略有不同
Scenario: request.clientDescription.includes('blue eyes')
Background:

* def isBlueEyed = function(){return karate.match("request.clientDescription contains 'Blue Eyes'").pass}

Scenario:

    pathMatches('/callService') &&
    methodIs('post') && isBlueEyed()
    * def response = read('./***/***/**')