我正在提供商端使用RestPactRunner进行一些契约合同测试,但是我遇到以下问题。出现主体时端点将返回“ application / json”内容类型标头,如
ResponseEntity<>(anyValidBody, HttpStatus.OK)
但是当没有尸体出现时,就像这样的反应
ResponseEntity<>(HttpStatus.FORBIDDEN)
即使方法签名中存在produces = APPLICATION_JSON_VALUE
,“ Content-Type:text / plain”标头也会默认发送给客户端(合同测试失败,因为它期望有application / json标头)< / p>
我一直在寻找一种在测试级别设置默认内容类型标头的方法,但没有发现任何有用的方法。
有什么想法吗?预先感谢
答案 0 :(得分:1)
HttpResponse的响应类型通常在请求映射中指定 例如:-
@RequestMapping(value = "/url", method = RequestMethod.GET,
produces = "application/json; charset=utf-8")
如果未指定spring,则在这种情况下将提供默认值;如果存在任何数据,spring将提供application / json;当没有数据时,spring将提供text / plain。有一个带有以下签名的方法,您可以为您可以使用此方法设置内容类型
public ResponseEntity(T body, MultiValueMap<String, String> headers, HttpStatus status)