【发布时间】:2019-05-18 01:14:33
【问题描述】:
我正在测试一个端点并且响应内容类型是“application/xml;charset=ISO-8859-1”,而我期望它是“application/xml”。你能看到我在哪里错误配置了生产方面吗?我将它添加到函数的@RequestMapping 并收到了相同的意外结果。
待测功能
@Controller
@RequestMapping(value = "/sitemaps",
consumes = MediaType.ALL_VALUE,
produces = MediaType.APPLICATION_XML_VALUE)
public class SitemapQueryControllerImpl implements SitemapQueryController {
@RequestMapping(value = "/index.xml", method = RequestMethod.GET)
public ResponseEntity<String> GetSitemapIndex() {
return new ResponseEntity<>("<Hello>", HttpStatus.OK);
}
}
测试
@RunWith(SpringRunner.class)
@WebMvcTest(controllers = SitemapQueryControllerImpl.class, secure = false)
@ContextConfiguration(classes = {ApplicationTestContext.class})
public class SitemapQueryController_Spec {
@Autowired
private MockMvc mockMvc;
@Before
public void setup() { }
@Test
public void GetSitemapIndex_Successul() throws Exception {
String expect = "<Hello>";
mockMvc.perform(get("/sitemaps/index.xml")
.contentType(MediaType.APPLICATION_XML_VALUE))
.andExpect(status().isOk())
.andExpect(content().contentType(MediaType.APPLICATION_XML_VALUE))
.andExpect(content().xml(expect));
}
【问题讨论】:
-
这可能是因为您在
@Controller注释之后缺少@ResponseBody注释,@Controller和@RestController之间存在细微差别(=@Controller+@ResponseBody)
标签: unit-testing spring-mvc spring-boot