Как утверждать об исключениях, используя MockMvc? - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть этот метод для создания пользователя

@PostMapping()
    public ResponseEntity create(@Valid @RequestBody final User user) {
        if (userRepository
                .findById(user.getId())
                .isPresent()) {
            throw new UserAlreadyExistsException(user.getId());
        }

        userRepository.save(user);
        return ResponseEntity
                .ok()
                .build();
    }

и я пытаюсь проверить это с помощью mockMvc.

 @Test
    public void createException() throws Exception {
        final User foo = new User(1, "foo");
        given(userRepository.findById(foo.findById())).willReturn(Optional.of(foo));
        given(userRepository.save(foo)).willReturn(foo);

         mvc
                .perform(post("/add")
                        .contentType(MediaType.APPLICATION_JSON)
                        .content(asJsonString(foo)))
                .andExpect(status().is5xxServerError())
    }

Я ожидаю исключение UserAlreadyExistsException, но вместо этого я получил исключение ниже и тест не пройден.

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is UserAlreadyExistsException: User with id 1 already exists 
...