【问题标题】:If response contains the word 'any' then match response contains is failing如果响应包含单词“任何”,则匹配响应包含失败
【发布时间】:2019-02-13 13:16:24
【问题描述】:

假设我有这样的场景

Scenario: Call a Get API and validate the response 
    Given path 'myteam' 
    When method get 
    Then status 201 
    And print response
    And match response contains { teamFeature: 'pick any feature'}

我的 API 响应是

{
  "id": "6c0377cd-96c9-4651-bcc8-0c9a7d962bc3",
  "teamFeature": "pick any feature"
}

然后我收到类似的错误

example.feature:19 - javascript 评估失败:feature'}, :1:9 缺少关闭引号 特征'} ^ 在第 1 行第 9 列处

如果我的 API 响应不包含单词“any”并且我更改了 match 语句,那么它可以正常工作。看起来我需要以某种方式转义“任何”这个词。

我可以知道如何逃避“任何”这个词吗?

不确定这是否是空手道的错误。

试图打电话

com.intuit.karate.Match match = new com.intuit.karate.Match("pick any feature");
System.out.println(match.contains("pick any feature"));

并收到以下错误

线程“main”中的异常 java.lang.RuntimeException: javascript 评估失败:选择任何功能,预期:1:5;但发现 任何选择任何功能 ^ 在 com.intuit.karate.ScriptBindings.eval(ScriptBindings.java:152) 的第 5 列第 1 行 com.intuit.karate.ScriptBindings.updateBindingsAndEval(ScriptBindings.java:142) 在 com.intuit.karate.ScriptBindings.evalInNashorn(ScriptBindings.java:127) 在 com.intuit.karate.Script.evalJsExpression(Script.java:423) 在 com.intuit.karate.Script.evalKarateExpression(Script.java:337) 在 com.intuit.karate.Script.evalKarateExpression(Script.java:203) 在 com.intuit.karate.Match.(Match.java:67) 在 com.intuit.karate.Match.(Match.java:53)

【问题讨论】:

  • 这种情况下的匹配步骤似乎存在问题,临时解决方法是* def expected = { teamFeature: 'pick any feature'},然后是And match response contains expected

标签: karate


【解决方案1】:

是的,这是空手道中的一个错误,我们已经打开了一个问题:https://github.com/intuit/karate/issues/678

@BabuSekaran 建议的解决方法将起作用:

* def response = { foo: 'a any b' }
* def temp = { foo: 'a any b' }
* match response contains temp

【讨论】:

    猜你喜欢
    • 2013-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-19
    • 1970-01-01
    相关资源
    最近更新 更多