简单的Spring REST测试抛出HttpMediaTypeNotSupportedException

时间:2015-11-09 03:24:41

标签: java spring rest

我在一个类中设置了一个简单的Spring REST方法,它应该只返回在POST请求中作为响应发送给它的文本。我在MyService.java类中的方法:

@RequestMapping(value = "/my/url", method = RequestMethod.POST, consumes = MediaType.TEXT_PLAIN_VALUE, produces = MediaType.TEXT_PLAIN_VALUE)
public ResponseEntity<String> myMethod(@RequestBody final String body) {
    return new ResponseEntity<String>(body, HttpStatus.OK);
}

我有一个单元测试,它使用Spring的MockMvc来测试方法:

@Autowired
private MyService service;

private MockMvc mockMvc;

@Before
public void setup() throws Exception {
    mockMvc = standaloneSetup(service).build();
}

@Test
public void myTest() throws Exception {
    Assert.assertNotNull(service); // Class has been instantiated

    final String content = "Hello world";
    final String url = "/my/url";

    final MvcResult result = mockMvc.perform(post(url) //
            .content(content) //
            .accept(MediaType.TEXT_PLAIN_VALUE)) //
            .andExpect(status().isOk()) //
            .andReturn();
}

测试失败并显示消息“状态预期:&lt; 200&gt;但是:&lt; 415&gt;”在单元测试的perform()行上。在控制台中,我可以看到此消息:

解析来自handler [null]的异常:org.springframework.web.HttpMediaTypeNotSupportedException:不支持内容类型'null'

415是“内容不受支持”错误。

Spring version 4.1.7。

关于我做错了什么的任何建议?提前谢谢。

1 个答案:

答案 0 :(得分:1)

固定。执行POST时缺少内容类型。我将此添加到测试中并且成功运行:

.header("Content-Type", MediaType.TEXT_PLAIN_VALUE)