java - 设置用于测试的默认 Content-Type

标签 java spring testing content-type pact

我正在提供商端使用 RestPactRunner 进行一些 Pact Contract 测试,我遇到了以下问题。当正文存在时,端点返回一个“application/json”内容类型 header ,如

ResponseEntity<>(anyValidBody, HttpStatus.OK)

但是当没有body存在时,就像这个响应

ResponseEntity<>(HttpStatus.FORBIDDEN)

默认情况下,“Content-Type:text/plain” header 会发送到客户端,即使 produces = APPLICATION_JSON_VALUE 出现在方法签名中(并且 Contract Test 失败,因为它期待一个应用程序/json 头)

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

有什么想法吗?提前致谢

最佳答案

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)

关于java - 设置用于测试的默认 Content-Type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55050981/

相关文章:

java - 如何运行多个 JavaFX 测试?

angularjs - 如何根据 john papa 风格指南在 angularjs 中编写测试

java - Hibernate @NotNull(仅当另一个属性不为空时?)

java - 在 Android 中以编程方式更改 Spinner

java - 使用SVN作为Spring Cloud Config服务器时出错

java - Ljava.lang.Object;无法转换为 com.entity.MechanicEntity

spring - DRY Spring 注解配置测试

java - 导入 PhotoView?

java - 是否有用于 Java 自定义集合实现的测试套件?

java - 如何从 Java Rest Api Spring 3 IE11 接收 JS 事件?