设置默认的Content-Type进行测试

问题描述 投票:0回答:1

我正在提供商方面使用RestPactRunner进行一些Pact Contract测试,我遇到了以下问题。当body存在时,端点返回“application / json”Content-type标头

ResponseEntity<>(anyValidBody, HttpStatus.OK)

但是当没有身体存在时,就像这种反应一样

ResponseEntity<>(HttpStatus.FORBIDDEN)

默认情况下,“Content-Type:text / plain”标头会发送到客户端,即使方法签名中存在produces = APPLICATION_JSON_VALUE(并且合同测试因为期望应用程序/ json标头而失败)

我一直在寻找一种在测试级别设置默认内容类型标头的方法,但没有找到任何有用的东西。

有任何想法吗?提前致谢

java spring testing content-type pact
1个回答
1
投票

HttpResponse的响应类型通常在请求映射中指定,例如: -

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

如果未指定弹簧将提供默认值,则在这种情况下,如果存在任何数据,则spring将提供application / json;如果没有数据,则spring将提供text / plain。有一个具有以下签名的方法,您可以在其中提供响应的头,您可以使用此方法设置内容类型

public ResponseEntity(T body, MultiValueMap<String, String> headers, HttpStatus status)
© www.soinside.com 2019 - 2024. All rights reserved.