Тестирование конечных точек весеннего отдыха - PullRequest
0 голосов
/ 15 марта 2020

Я пытаюсь запустить тесты на моем контроллере, когда я пытаюсь выполнить тест findbyid, я продолжаю получать 404, и я не уверен почему.

Это метод с моего контроллера

 @CrossOrigin
@GetMapping(path="/movie/{id}")
public @ResponseBody Movies getMovie(@PathVariable Integer id){
    return moviesRepository.findById(id)
            .orElseThrow(() -> new ResponseStatusException(
            HttpStatus.NOT_FOUND, "Movie not found"
    ) );
}

И это тест.

@Test
void getSingleMovie() throws Exception{
    Movies movies = new Movies(1, "Star Wars", "A New Hope");
    when(moviesController.getMovie(1)).thenReturn(movies);
    MvcResult mvcResult = mockMvc.perform(
            MockMvcRequestBuilders.get("/movies/1")
                    .accept(MediaType.APPLICATION_JSON)
    ).andReturn();
    Mockito.verify(moviesRepository).findAllById(Collections.singleton(1));

В выводе моей трассировки стека содержится следующее ...

    MockHttpServletResponse:
           Status = 404
    Error message = Movies not found
          Headers = [Vary:"Origin", "Access-Control-Request-Method", "Access-Control-Request-Headers"]
     Content type = null
             Body = 
    Forwarded URL = null
   Redirected URL = null
          Cookies = []
    java.lang.AssertionError: Response header 'Access-Control-Allow-Origin' expected:<*> but was:<null>
    Expected :*
    Actual   :null

1 Ответ

0 голосов
/ 16 марта 2020

Вам нужно немного изменить метод тестирования, как показано ниже. требуется некоторая коррекция

@Test
void getSingleMovie() throws Exception{
    Movies movies = new Movies(1, "Star Wars", "A New Hope");
    when(moviesRepository.findById(Mockito.eq(1))).thenReturn(Optional.of(movies));
    MvcResult mvcResult = mockMvc.perform(
            MockMvcRequestBuilders.get("/movie/1")
                    .accept(MediaType.APPLICATION_JSON)
    ).andReturn();
    Mockito.verify(moviesRepository).findById(Mockito.eq(1));
...