Настройка Content-Type по умолчанию для тестирования - PullRequest
0 голосов
/ 07 марта 2019

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

ResponseEntity<>(anyValidBody, HttpStatus.OK)

Но когда тела нет, как этот ответ

ResponseEntity<>(HttpStatus.FORBIDDEN)

заголовок «Content-Type: text / plain» отправляется клиенту по умолчанию, даже если в сигнатуре метода присутствует produces = APPLICATION_JSON_VALUE (и проверка контракта завершается неудачно, поскольку ожидается заголовок приложения / json)

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

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

1 Ответ

1 голос
/ 08 марта 2019

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

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

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

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