Как преобразовать groovyx.net.http.HttpResponseDecorator в пользовательский класс - PullRequest
0 голосов
/ 17 сентября 2018

Я пишу класс Integration Test, используя Spock Framework, там мой ответ удерживается внутри groovyx.net.http.HttpResponseDecorator

Я пытаюсь привести в свой класс, скажем, TestEntity, используя следующий шаг

HttpResponseDecorator response = getRestClient().delete([path: "$BASE_URL"+"/96023"])

Здесь метод Path возвращает TestEntity, Теперь я хочу получить эту сущность и написать утверждения

TestEntity entity = (TestEntity)response.getData()

Когда я пишу это утверждение, я получаю ERROR! org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object

1 Ответ

0 голосов
/ 07 ноября 2018

Какой класс возвращается getData(), зависит от того, какой тип содержимого возвращает API REST, который вы вызываете.

Добавьте эту строку, чтобы проверить, какой класс использует Groovy в вашем случае:

println response.data.getClass()

... или используйте debug в вашей IDE для получения той же информации.

Например, для типа контента:

  • application/json используется класс org.apache.groovy.json.internal.LazyMap
  • application/xml используется класс groovy.util.slurpersupport.NodeChild
  • * используется 1020 * класс java.io.StringReader

Если вы тестируете серверную часть, которая использует TestEntity class в качестве ответа (например, используя @RestController и @RequestMapping в Spring), тогда у вас не будет TestEntity экземпляра в клиенте (тест Спока).

...