【发布时间】:2015-07-22 15:21:00
【问题描述】:
我有一个看起来像这样的简单控制器测试
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = CuponzaApiApplication.class)
@WebAppConfiguration
public class UserControllerTest {
private MockMvc mockMvc;
@Autowired
protected WebApplicationContext wac;
@Autowired
UserRepository userRepository;
@Before
public void setUp(){
mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();
}
@Test
public void createUser() throws Exception{
CuponzaUser user = new CuponzaUser("some@test.com", "firstName", "lastName");
ObjectWriter jackson = new ObjectMapper().writer().withDefaultPrettyPrinter();
mockMvc.perform(post("/user/add").content(jackson.writeValueAsString(user)).contentType(MediaType.APPLICATION_JSON))
.andDo(print())
.andExpect(status().isOk())
.andExpect(content().contentType("application/json"));
}
但是它无法说出以下内容 java.lang.AssertionError:未设置内容类型
这是我的控制器
@RestController
public class UserController {
@Autowired
UserRepository userRepository;
@RequestMapping(value = "/user/add",method = RequestMethod.POST,produces={MediaType.APPLICATION_JSON_VALUE})
public void AddUser(@RequestBody CuponzaUser user, HttpServletResponse response){
if(user ==null){
response.setStatus(HttpStatus.BAD_REQUEST.value());
return;
}else{
user.setCreationDate(new Date());
user.setLastSeenDate(new Date());
userRepository.save(user);
//response.addHeader("Content-Type", MediaType.APPLICATION_JSON_VALUE);
return;
}
}
我不想为每个响应手动添加内容类型标头,我认为“生产”注释应该解决这个问题
有什么想法吗?
【问题讨论】:
标签: spring-mvc spring-boot spring-test