【问题标题】:Karate Mock Server - match request body that contains a specific string in the request空手道模拟服务器 - 匹配请求正文,其中包含请求中的特定字符串
【发布时间】:2021-05-18 14:57:38
【问题描述】:

我有一个请求正在访问我的模拟服务器...该请求在 json 中,但其中一个值是大约 2,000 多个字符的字符串。如果字符串值(的2,000+ 个字符)包含一个特定的子字符串值...

例如:

Scenario:
   pathMatches('/callService') &&
   methodIs('post') && request.clientDescription contains 'blue eyes'

(request.clientDescription = 2,000+ 个字符的字符串) 似乎它不喜欢关键字 contains,而且我似乎找不到任何有关用于在请求中搜索给定字符串并查看它是否包含特定值的语法的信息。

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

【问题讨论】:

    标签: path karate


    【解决方案1】:

    这里有个提示,你在Scenario:右边看到的都是纯JavaScript,而methodIs()等恰好是为了你的方便而预先定义的。

    所以这应该工作,使用String.includes()

    Scenario: request.clientDescription.includes('blue eyes')
    

    其他想法也请参考这个答案:https://stackoverflow.com/a/57463815/143475

    还有一个:https://stackoverflow.com/a/63708918/143475

    【讨论】:

    • 酷。既然我知道它“是纯 JavaScript”,我确信可能性是无穷无尽的。没有意识到这一点我觉得很傻……表明我在 JavaScript 方面没有做太多的开发。对于响应的断言,我太沉迷于 Cucumber/Gherkin 语法,但现在一切都说得通了。感谢快速响应。谢谢!
    • @Jf_foster05 随时。也请阅读:stackoverflow.com/help/someone-answers
    【解决方案2】:

    当我在场景中添加“&& 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 is not a function in at at line number 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('./***/***/**')
    

    【讨论】:

    • 好吧,也许String.contains() 会起作用。不同空手道版本的 JS 引擎略有不同
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多