2016-05-09 2 views
2

это мой контроллер ...java.lang.AssertionError: Статус ожидается: <200> но: <400>

@RequestMapping(value = "/user", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE, headers = "Accept=application/json") 
public @ResponseBody ResponseMessage getUser(@RequestBody AvailableUser uuid) { 
    logger.info("enter into getuser method's body"); 
    return Manager.availableUser(uuid); 
} 

это мой testcontroller ...

@Test 
public void testgetUser() throws Exception 
{ 
    AvailableUser availableUser=new AvailableUser(); 
    List<String> lst =new ArrayList<String>(); 
    lst.add("test1"); 
    lst.add("test2"); 
    availableUser.setUuId(lst); 
    this.mockMvc.perform(post("/user").contentType(MediaType.APPLICATION_JSON).accept(MediaType.APPLICATION_JSON)) 
     .andExpect(status().isCreated()) 
     .andExpect(status().isOk()); 
     when(Manager.availableUser(availableUser)).thenReturn(message); 
} 

Я не знаю, как передать объект, когда метод контроллера вызывает ("/user") форму testcontroller.

и я получил сообщение об ошибке java.lang.AssertionError: Status expected:<200> but was:<400>

+1

Может быть, потому, что вы не предоставили любой орган по вашему запросу. Попробуйте добавить .content (availableUser) к вашему сообщению –

+0

, когда я добавляю {.content (availableUser)}, я получил сообщение об ошибке msg. "Содержимое метода (byte []) в типе MockHttpServletRequestBuilder не применимо для аргументов (AvailableUser)" – Shailu

+1

Я не понял, почему «Принять» добавлено в заголовки в контроллере? Требуется ли это, когда мы потребляем/производим? – VinayVeluri

ответ

2

Если вы используете Джексон, самый простой подход заключается в сериализации AvailableUser к JSON строки с помощью экземпляра ObjectMapper:

@Test 
public void testgetUser() throws Exception 
{ 
    // Same stuff 
    ObjectMapper mapper = new ObjectMapper(); 
    this.mockMvc 
     .perform(
        post("/user") 
       .contentType(MediaType.APPLICATION_JSON) 
       .accept(MediaType.APPLICATION_JSON) 
       .content(mapper.writeValueAsString(availableUser)) 
     ) 
     .andExpect(status().isCreated()) 
     .andExpect(status().isOk()); 
    // Same as before 
} 
+1

спасибо ...... он работает ...... – Shailu