Как получить HTTP-статус ответа от Karate Call? Получение статуса ответа как 204, но файл karate.log (result.response) пуст

Я вызываю веб-сервис через Karate API. Когда служба выполняется, я получаю ожидаемый HTTP-статус 204. Однако, когда я регистрирую ответ, я получаю пустое поле.

Ниже мой вызов веб-службы, ответ и вывод журнала

    result = karate.call('ExecuteWebService.feature', [urlToExecute]);
    karate.log("Response is " + result.response); #Expecting that code displays HTTP status here

Я знаю, что получаю правильный ответ на звонок, потому что в моих журналах отображается содержимое ниже

    HH.mm.ss.mil [main] DEBUG com.intuit.karate - 
    1 < 204
    1 < Date: Fri, Rest of date portion
    1 < X-Application-Context: App Context Data

Однако karate.log не отображает код состояния. Мне нужен код состояния, чтобы я мог подтвердить статус по моим ожидаемым значениям и, таким образом, пройти / не пройти тест

    HH.mm.ss.mil [main] DEBUG com.intuit.karate - response time in milliseconds: 431
    HH.mm.ss.mil [main] INFO com.intuit.karate - [print] 
    HH.mm.ss.mil [main] INFO com.intuit.karate - Response is  

Можете ли вы посоветовать, как извлечь статус HTTP из результата karate.call, чтобы я мог подтвердить ответ?


person JMD    schedule 28.12.2018    source источник


Ответы (2)


Это должно работать,

* def status = result.responseStatus

аналогично вы также можете получить доступ к response, responseTime, responseHeaders, responseCookies

person Babu Sekaran    schedule 28.12.2018
comment
еще одна вещь, с которой вы можете получить доступ ко всем переменным, которые вы определили в своем названии, также является функцией. - person Babu Sekaran; 28.12.2018
comment
распечатайте свою переменную 'result', чтобы увидеть все данные, возвращенные из вашего karate.call - person Babu Sekaran; 28.12.2018
comment
Да, я пробовал. Он напечатал что-то вроде com.intuit.karate.ScriptObjectMap@423c5404. Поэтому не знал, как получить данные из ObjectMap. То, что вы ответили, было тем, что я искал - person JMD; 28.12.2018

Код ответа 204 означает:

Сервер успешно выполнил запрос, и в теле полезной нагрузки ответа нет дополнительного содержимого для отправки.

Так что это нормально, что у вас ничего нет в теле ответа.
В вашем случае я бы проверил только правильность кода состояния (согласно спецификациям приложения).

person Ukrainis    schedule 28.12.2018
comment
Как мне получить код статуса из результата? В настоящее время karate.log () отображает пустой код состояния, а не 204. - person JMD; 28.12.2018