Как я могу использовать местоположение из заголовков ответа в следующем запросе? - PullRequest
1 голос
/ 30 мая 2019

Я выполняю тест с использованием теста каратэ.

1-е сообщение, которое ожидает 201 и местоположение.

2-ой используйте местоположение от ответа до получения.

Кто-нибудь знает, как я могу сделать это с каратэ?

Следующий код - моя попытка, после многих других.

Given path 'alpha/test'
And request
"""
 {
   "id": '#(uuid)',
    "content": "test",
    "isActive": true
 }
"""
When method post
Then status 201
And def endpointLocation = responseHeaders['Location']
And print endpointLocation

Given url 'endpointLocation'
When method get
Then status 200
And match response ==
"""
 {
   "id": '#(uuid)'
 }
"""

Но я получаю:

18:30:12.819 [main] ERROR com.intuit.karate - org.apache.http.client.ClientProtocolException, http call failed after 252 milliseconds for URL: endpointLocation
18:30:12.820 [main] ERROR com.intuit.karate - http request failed: 
org.apache.http.client.ClientProtocolException
testApi.feature:263 -
org.apache.http.client.ClientProtocolException

Я не понимаю, почему.

[EDIT]

После уговоров из Питера, спасибо!

Печать возврата:

08: 59: 33.610 [главная] ИНФОРМАЦИЯ com.intuit.karate - [печать] [ «https://www.test.com/enpoint/4603b043-ea8c-470d-a5a9-2aa50aea4f75"]

Теперь я звоню

Заданная конечная точка URLLocation

и я получаю

08: 59: 33.611 [main] ОШИБКА com.intuit.karate - запрос http не выполнен: java.net.URISyntaxException: недопустимый символ в имени схемы в индексе 0: ["https://www.test.com/enpoint/4603b043-ea8c-470d-a5a9-2aa50aea4f75"] fraudMgmtApi.feature: 263 - java.net.URISyntaxException: недопустимый символ в имени схемы с индексом 0: ["https://www.test.com/enpoint/4603b043-ea8c-470d-a5a9-2aa50aea4f75"]

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

  • def trim = «»» function (myText) {result = myText.substring (1, myText.length-1)} "" "

Или myText.slice (1, -1)

1 Ответ

0 голосов
/ 31 мая 2019

Из сообщения об ошибке: http call failed after 252 milliseconds for URL: endpointLocation

Ясно, что вы устанавливаете url неправильно. Сначала попробуйте жестко запрограммировать его, затем внесите это изменение, если переменная endpointLocation установлена ​​правильно. Вы можете print это проверить.

Given url endpointLocation
...