Установка типа содержимого по умолчанию для тестирования

#java #spring #testing #content-type #pact

#java #spring #тестирование #тип содержимого #соглашение

Вопрос:

Я работаю над некоторыми тестами Pact Contract, используя RestPactRunner на стороне поставщика, и у меня следующая проблема. Конечная точка возвращает заголовок типа содержимого «application / json», когда присутствует тело, например

 ResponseEntity<>(anyValidBody, HttpStatus.OK)
  

Но когда тело отсутствует, например, этот ответ

 ResponseEntity<>(HttpStatus.FORBIDDEN)
  

заголовок «Тип содержимого: текстовый / обычный» отправляется клиенту по умолчанию, даже если produces = APPLICATION_JSON_VALUE присутствует в сигнатуре метода (и тест контракта завершается неудачей, поскольку ожидается заголовок application / json)

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

Есть идеи? заранее спасибо

Ответ №1:

Тип ответа для HttpResponse обычно указывается в сопоставлении запроса, например:-

 @RequestMapping(value = "/url", method = RequestMethod.GET, 
produces = "application/json; charset=utf-8")
  

Если он не указан, spring предоставит значения по умолчанию, в этом случае spring предоставит application / json, если какие-либо данные присутствуют, и text / plain, если данных нет.Существует метод со следующей подписью, в котором вы можете предоставить заголовки для ответа, вы можете установить тип содержимого, используя этот метод

 public ResponseEntity(T body, MultiValueMap<String, String> headers, HttpStatus status)