2016-05-09 4 views
2

es mein Controller ist ...java.lang.AssertionError: Status erwartet: <200> aber war: <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); 
} 

es mein Testcontroller ist ...

@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); 
} 

Ich weiß nicht, wie man übergeben Sie das Objekt, wenn der Controller-Methodenaufruf ("/user") Formular testcontroller.

und ich bekam Fehlermeldung java.lang.AssertionError: Status expected:<200> but was:<400>

+1

Vielleicht, weil Sie nicht liefern Jeder Körper zu Ihrer Anfrage. Versuche, .content (availableUser) zu deinem Beitrag hinzuzufügen –

+0

wenn ich {.content (availableUser)} hinzufüge, habe ich die Fehlermeldung erhalten. "Der Methodeninhalt (byte []) im Typ MockHttpServletRequestBuilder ist nicht anwendbar für die Argumente (AvailableUser)" – Shailu

+1

Ich habe nicht verstanden, warum die "Accept" zu den Headern im Controller hinzugefügt wird? Ist das erforderlich, wenn wir konsumiert haben? – VinayVeluri

Antwort

2

Wenn Sie Jackson verwenden, ist die einfachste Methode ist, den AvailableUser zu JSON String mithilfe einer Instanz von ObjectMapper serialisiert:

@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

danke ...... es funktioniert ...... – Shailu

Verwandte Themen