java - 为测试设置默认 Content-Type
问题描述
我正在提供者方面使用 RestPactRunner 进行一些 Pact Contract 测试,但我遇到了以下问题。当 body 存在时,端点返回“application/json”内容类型标头,例如
ResponseEntity<>(anyValidBody, HttpStatus.OK)
但是当没有身体存在时,就像这个反应
ResponseEntity<>(HttpStatus.FORBIDDEN)
默认情况下,“Content-Type:text/plain”标头会发送到客户端,即使produces = APPLICATION_JSON_VALUE
方法签名中存在(合同测试失败,因为它需要一个 application/json 标头)
我正在寻找一种在测试级别设置默认内容类型标头的方法,但没有发现任何有用的东西。
有任何想法吗?提前致谢
解决方案
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)
推荐阅读
- javascript - PHP 中的 Implode 函数没有在 js 图表中显示我的结果
- python - 下载后如何在colaboratory环境下解压到指定文件夹中的文件?
- sql - Oracle 数据库错误:ORA-06502:PL/SQL:数字或值错误:字符串缓冲区太小
- php - ajax jquery复选框值重复
- regex - 正则表达式可变长度后向通配符
- java - 在 JUnit Jupiter 中使用自定义组合注释时为 @Autowired bean 获取 NPE
- regex - 如何匹配此字符串中的一个或两个连续(并将它们分组)数字:-4-45- 或 -15-25-03-
- c# - 为选定的搜索条件创建动态表达式树
- angular - 将 Angular 7 应用程序代理到在不同端口上运行的后端端点
- linux - 在 linux bash 中删除文件的简单脚本