2017-09-19 3 views
0

Ich versuche, Unit-Test für die unter PUT api mit String [] zu erstellen, wie Anfrage KörperMockmvc Unit-Tests mit String [] als Anfrage Körper

@RequestMapping(value = "/test/id", method = RequestMethod.PUT) 
public ResponseEntity<?> updateStatus(@RequestBody String[] IdList,.........) 
{ 
} 

und mein Test geht wie unten

@Test 
    public void updateStatus() throws Exception { 
     when(serviceFactory.getService()).thenReturn(service);   

     mockMvc.perform(put(baseUrl + "/test/id) 
         .param("IdList",new String[]{"1"})) 
         .andExpect(status().isOk()); 

    } 

-Test schlägt fehl mit der folgenden Ausnahme java.lang.AssertionError: Status erwartet: < 200> aber war: < 400>

Welche co Uld sein der beste Weg, String-Array-Param von mockmvc übergeben?

Antwort

0

Sie setzen Ihre Zeichenfolge [] in param. Du solltest es in Körper stecken. Man kann es so sagen (ich nehme an, dass Sie json verwenden Wenn Sie xml verwenden, können Sie es entsprechend ändern.):

ObjectMapper mapper = new ObjectMapper(); 
String requestJson = mapper.writeValueAsString(new String[]{"1"}); 
mockMvc.perform(put(baseUrl + "/test/id) 
        .contentType(MediaType.APPLICATION_JSON_UTF8).content(requestJson) 
        .andExpect(status().isOk()); 
+0

Ehrfürchtig ... funktionierte, wie es is..Thanks .. – kns