2017-05-28 8 views
1

Ich habe folgende Postroute in meinem REST-Controller:MockMvc Test POST-Anfrage

@RequestMapping(value = "", method = RequestMethod.POST, produces = 
"application/json") 
public ResponseEntity saveMovie(@RequestBody Movie movie){ 
    movieService.saveMovie(movie); 
    return new ResponseEntity<Movie>(movie, HttpStatus.OK); 
} 

Die Route einen Dienst nutzt den Film im Anforderungstext in Datenspeicher übergeben hinzuzufügen. Die Unterzeichnung der Service-Methode, ist dies:

@Test 
    public void saveMovie() throws Exception { 
    Movie movie1 = new Movie(); 
    movie1.setImdbID("imdb1"); 
    movie1.setTitle("Meter"); 
    movie1.setYear("2015"); 
    movie1.setPoster("meter.jpg"); 

    when(movieService.saveMovie(movie1)).thenReturn(movie1); 
    mockMvc.perform(post("/v1/api/movie") 
      .contentType(MediaType.APPLICATION_JSON_UTF8) 
      .content(asJsonString(movie1)) 
      .accept(MediaType.APPLICATION_JSON)) 
      .andExpect(status().isOk())     
      .andExpect(content().contentType 
       (MediaType.APPLICATION_JSON_UTF8_VALUE)); 
      verify(movieService, times(1)).saveMovie(movie1); 
      verifyNoMoreInteractions(movieService); 
} 



public static String asJsonString(final Object obj) { 
    try { 
     final ObjectMapper mapper = new ObjectMapper(); 
     final String jsonContent = mapper.writeValueAsString(obj); 
     System.out.println(jsonContent); 
     return jsonContent; 
    } catch (Exception e) { 
     throw new RuntimeException(e); 
    } 
} 

ich folgende Fehlermeldung erhalten:

Argument(s) are different! Wanted: 
com.stackroute.ng2boot.service.MovieService#0 bean.saveMovie(
    [email protected] 
); 
-> at 

com.stackroute.ng2boot.controllers.MovieRestControllerTest. 
saveMovie(MovieRestControllerTest.java:129) 
Actual invocation has different arguments: 
com.stackroute.ng2boot.service.MovieService#0 bean.saveMovie(
[email protected] 
); 
-> at  
com.stackroute.ng2boot.controllers.MovieRestController. 
saveMovie(MovieRestController.java:60) 

Movie saveMovie(Movie movie); 

ich den folgenden Test und eine Hilfsmethode für sie geschrieben habe Außer speichern und aktualisieren, wo ich einen Film JSON als Anfragekörper übergeben muss, bestehen die anderen Router Tests. Bitte teile deine wertvollen Beiträge.

Vielen Dank im Voraus.

Antwort

0

Können Sie versuchen:

import static org.mockito.Matchers.refEq; 
---- 
verify(movieService, times(1)).saveMovie(refEq(movie1)); 
Verwandte Themen