Настройте Каратэ Мок для работы с API, имеющими Тип контента, отличный от JSON, XML - PullRequest
2 голосов
/ 07 мая 2019

Мне нужно смоделировать API с помощью Karate Mock, который принимает сообщения с 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 Ответ

2 голосов
/ 07 мая 2019

Это должно быть исправлено в более новой версии каратэ, попробуйте обновить.

Я думаю, что это будет в 0.9.2 - https://github.com/intuit/karate/issues/649

...