将Karate Mock配置为与JSON,XML

时间:2019-05-07 07:31:14

标签: karate

我需要使用Karate Mock模拟一个API,该API接受具有以下Content-Type的消息并做出相应的响应

'Content-Type: application/x-www-form-urlencoded'

我尝试按如下所示在功能文件中对其进行配置,但遇到以下问题。我猜默认情况下它接受JSON作为内容类型,是否有任何方法可以配置模拟以读取像这样的自定义消息。

实际的API调用:

curl -X POST -H "Content-Type: application/x-www-form-urlencoded"    -d "elem_value=generic_value&address="  http://myhost:9090/api/resource_path

模拟功能文件:

Scenario: pathMatches('/api/resource_path') && typeContains('urlencoded') 
        * def responseStatus = 200
        * def response = read ('/payload/Success.json')
        * print response

实际错误:

Caused by: <eval>:1 ReferenceError: "generic_value" is not defined
        at jdk.nashorn.internal.runtime.ECMAErrors.error(ECMAErrors.java:57)
        at jdk.nashorn.internal.runtime.ECMAErrors.referenceError(ECMAErrors.java:319)
        at jdk.nashorn.internal.runtime.ECMAErrors.referenceError(ECMAErrors.java:291)
        at jdk.nashorn.internal.objects.Global.__noSuchProperty__(Global.java:1441)
        at jdk.nashorn.internal.scripts.Script$43$\^eval\_.:program(<eval>:1)
        at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:637)
        at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:494)
        at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:393)
        at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:449)

1 个答案:

答案 0 :(得分:2)

此问题应该已在空手道的较新版本中修复,请尝试升级。

我认为它将是0.9.2-https://github.com/intuit/karate/issues/649