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

时间:2019-03-07 18:57:51

标签: java spring testing content-type pact

我正在提供商端使用RestPactRunner进行一些契约合同测试,但是我遇到以下问题。出现主体时端点将返回“ application / json”内容类型标头,如

ResponseEntity<>(anyValidBody, HttpStatus.OK)

但是当没有尸体出现时,就像这样的反应

ResponseEntity<>(HttpStatus.FORBIDDEN)

即使方法签名中存在produces = APPLICATION_JSON_VALUE,“ Content-Type:text / plain”标头也会默认发送给客户端(合同测试失败,因为它期望有application / json标头)< / p>

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

有什么想法吗?预先感谢

1 个答案:

答案 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)