空手道模拟服务器 - 匹配请求中包含特定字符串的请求正文
Karate Mock Server - match request body that contains a specific string in the request
我有一个请求正在访问我的模拟服务器...该请求在 json 中,但其中一个值是大约 2,000 多个字符的字符串。我想匹配该请求如果字符串值(超过 2,000 个字符)包含特定的子字符串值...
例如:
Scenario:
pathMatches('/callService') &&
methodIs('post') && request.clientDescription contains 'blue eyes'
(request.clientDescription = 2,000 多个字符的字符串)
它似乎不喜欢关键字包含,而且我似乎找不到任何关于我将用于搜索请求中的给定字符串并查看它是否包含特定值的语法的信息。
我知道我可以尝试使用“==”来匹配整个字符串值,但我正在寻找一种仅在它包含子字符串时才匹配的方法。
提示一下,你在Scenario:
右边看到的都是纯JavaScript,而methodIs()
等恰好是预先定义的,方便你使用。
所以这应该有效,使用 String.includes()
Scenario: request.clientDescription.includes('blue eyes')
另请参考此答案以获取其他想法:
还有一个:
当我在场景中添加“&& request.clientDescription.includes('blue eyes')”时,它似乎并不喜欢,但它确实指引了我正确的方向,我确实找到了解决方案。谢谢!
错误:将 String.includes 添加到场景后:
com.intuit.karate - 场景匹配评估失败:评估(js)失败:pathMatches('/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
在后台定义了一个函数
解决方案的代码示例:
Background:
* def isBlueEyed = function(){return karate.match("request.clientDescription contains 'Blue Eyes'").pass}
Scenario:
pathMatches('/callService') &&
methodIs('post') && isBlueEyed()
* def response = read('./***/***/**')
我有一个请求正在访问我的模拟服务器...该请求在 json 中,但其中一个值是大约 2,000 多个字符的字符串。我想匹配该请求如果字符串值(超过 2,000 个字符)包含特定的子字符串值...
例如:
Scenario:
pathMatches('/callService') &&
methodIs('post') && request.clientDescription contains 'blue eyes'
(request.clientDescription = 2,000 多个字符的字符串) 它似乎不喜欢关键字包含,而且我似乎找不到任何关于我将用于搜索请求中的给定字符串并查看它是否包含特定值的语法的信息。
我知道我可以尝试使用“==”来匹配整个字符串值,但我正在寻找一种仅在它包含子字符串时才匹配的方法。
提示一下,你在Scenario:
右边看到的都是纯JavaScript,而methodIs()
等恰好是预先定义的,方便你使用。
所以这应该有效,使用 String.includes()
Scenario: request.clientDescription.includes('blue eyes')
另请参考此答案以获取其他想法:
还有一个:
当我在场景中添加“&& request.clientDescription.includes('blue eyes')”时,它似乎并不喜欢,但它确实指引了我正确的方向,我确实找到了解决方案。谢谢!
错误:将 String.includes 添加到场景后:
com.intuit.karate - 场景匹配评估失败:评估(js)失败:pathMatches('/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 在后台定义了一个函数
解决方案的代码示例:
Background:
* def isBlueEyed = function(){return karate.match("request.clientDescription contains 'Blue Eyes'").pass}
Scenario:
pathMatches('/callService') &&
methodIs('post') && isBlueEyed()
* def response = read('./***/***/**')