- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试对我在 Controller 中创建的发布请求进行 JUNIT 测试。虽然 GET 成功,但 POST 不成功。
public class SampleObject implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
public SampleObject(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
发布请求示例
@RequestMapping(value = "/post", method = RequestMethod.POST, produces="application/json", consumes="application/json")
@ResponseBody
public SampleObject postActiveSource(@RequestBody SampleObject inputObject) {
return inputObject;
}
这是我的模拟测试。
public class MockMvcHtmlUnitCreateMessageTest {
MockMvc mockMvc;
@InjectMocks
SampleController controller;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
this.mockMvc = standaloneSetup(controller)
.setMessageConverters(new MappingJackson2HttpMessageConverter()).build();
}
@Test
public void test() {
SampleObject so = controller.new SampleObject("abcd");
ObjectMapper mapper = new ObjectMapper();
try {
this.mockMvc.perform(post("/service/sample/post").content(mapper.writeValueAsString(so)).contentType(MediaType.APPLICATION_JSON).accept(MediaType.APPLICATION_JSON)).andDo(print());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
我得到了这个异常。
Resolved Exception:
Type = org.springframework.http.converter.HttpMessageNotReadableException
但是,获取请求工作正常。这里出了什么问题?任何帮助将不胜感激。
编辑1:
我注意到以下异常。这可能会有所帮助。
nested exception is com.fasterxml.jackson.databind.JsonMappingException: No suitable constructor found for type [simple type, class com..rest.controller.SampleController$SampleObject]: can not instantiate from JSON object (need to add/enable type information?)
at [Source: org.springframework.mock.web.DelegatingServletInputStream@c792d4; line: 1, column: 2]
编辑2:
基于a suggestion below ,我修改了构造函数,
public SampleObject(@JsonProperty("name") String name) {
this.name = name;
}
但是,我遇到以下异常
Caused by: java.lang.IllegalArgumentException: Argument #0 of constructor [constructor for SampleController$SampleObject, annotations: [null]] has no property name annotation; must have name when multiple-paramater constructor annotated as Creator at com.fasterxml.jackson.databind.deser.BasicDeserializerFactory.findValueInstantiator(BasicDeserializerFactory.java:287) ~[jackson-databind-2.3.4.jar:2.3.4]
最佳答案
默认情况下,Jackson 期望 POJO 类有一个无参数构造函数。如果您需要有参数化构造函数,则需要对其参数进行注释。
public SampleObject(@JsonProperty("name") String name) {
this.name = name;
}
关于java - mockMvc POST Junit 测试因 HttpMessageNotReadableException 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26123040/
我有一个这样的 DTO 对象: data class ClientDto( var uuid: String, var ip: String, var
当我尝试在 java 中使用 spring 执行 get 时,出现 HttpMessageNotReadableException。打印的 Stacktrace 说: 嵌套异常是 org.spring
我仍在学习测试方法,我正在尝试让 MockMvc 测试为我工作。这是一个简单的 REST Controller ,此时仅使用帖子中 json 中的信息进行一些身份验证。我实际上已经实现了代码,所以我知
我正在用 postman 尝试这段代码,但没有任何效果,为什么? 我寄什么: { "name":"front_msel", "gitlabId": "83", "fichier
我有一个带有双字段的表单。当我添加一个不是 Double ('foo') 的值时,它应该给我一个 BeanPropertyBindingResult ,其中包含该字段的错误。但我得到了一个HttpMe
我有以下异常处理程序: @ControllerAdvice public class MyExceptionHandler { private static final Logger logger
我正在尝试使用 postman 并将这些值放入数据库中,但我不断收到异常。 我试图从 postman 反序列化什么: { "end_date": "2443-11-34 12:43:23",
我在处理 json 格式的 Rest API 请求时遇到问题,该请求无法转换。请求代码如下所示: headers = {"content-type": "application/json","user
我有这个类来代表用户: @JsonInclude(JsonInclude.Include.NON_NULL) @JsonIgnoreProperties(ignoreUnknown = true) @
我有一个 API,需要以下 dto 结构。 data class SignupRequest( @NotEmpty(message ="Username must not be empty")
我有以下 mock mockMvc.perform(get("/bk/getBks?sd="+1262296800000L+"&nod=3")) .andDo(print()); 这是我的 C
我正在使用 Spring boot 并使用过滤器过滤请求。该过滤器用于检查用户验证,该验证正在从请求正文中读取一些数据(为此我使用了 HttpServletRequestWrapper 实现)。从 r
我想访问 HttpMessageNotReadableException 中的 _path 属性,但我不知道通过哪个或哪些方法来执行此操作。我怎样才能访问它? 我的JDK版本是JDK8,我的Sprin
我操作API服务器。 手机APP访问API服务器时,有时会出现该异常。 我尝试在测试服务器上进行测试,但无法重现。(我改变了apache和tomcat的连接时间。) 有什么问题?? 我该如何解决这个问
我正在尝试对我在 Controller 中创建的发布请求进行 JUNIT 测试。虽然 GET 成功,但 POST 不成功。 public class SampleObject implements S
我向我的网络服务添加了以下依赖项 org.springframework.cloud spring-cloud-starter-net
我正在尝试使用@RequestBody @Valid 注释在 Spring 中进行 bean 验证和数据映射。 正如您在实体 bean 中看到的那样,我使用了 @NotNull 和 @Min 注释,它
我正在使用 springframework -RestTemplate,为了发出 get 请求,并将 xml 响应转换为 java 对象。运行后:RestTemplate.exchange,我遇到以下
我有一个包含几个方法的 Controller 类,其中一个方法应该接受 POST 请求并使用来自该 POST 请求正文的 JSON 创建一个新帐户。 当我尝试使用 curl 发出 POST 请求时,我
这是我的客户端代码 RestTemplate restTemplate = new RestTemplate(); ResponseEntity responseEntity = re
我是一名优秀的程序员,十分优秀!