Это интеграционный или модульный тест? (тестирование контроллера покоя весной) - PullRequest
0 голосов
/ 27 августа 2018

Весной я пишу тесты для моего контроллера покоя. И у меня есть два вопроса.
1. Это интеграционный или модульный тест?
2. Должен ли я проверить здесь аннотации валидации, такие как @NotNull и @Valid и другие? Если нет, как их отключить? Потому что, когда я передаю неверный json для отправки запроса, эти аннотации по умолчанию выдадут мне неверный запрос на ошибку.

Внешние зависимости, такие как сервисы, высмеиваются, а класс имеет @ExtendWith(SpringExtension.class) @WebMvcTest(value = UserController.class, secure = false) аннотаций.

@Test
void findByUsername_returnUser() throws Exception {
    when(userService.findByUsername(USERNAME)).thenReturn(Optional.ofNullable(user));
    when(converterContext.getConverter(ConverterShowUserDto.class)).thenReturn(converterShowUserDto);
    when(converterShowUserDto.convert(user)).thenReturn(showUserDto);
    this.mockMvc.perform(get("/user?username=" + USERNAME))
            .andDo(print())
            .andExpect(status()
                    .isOk())
            .andExpect(jsonPath("$.username", is(USERNAME)));
}

Мой пример метода контроллера выглядит так:

@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public ResponseEntity getById(@PathVariable(value = "id") @ExistAccountWithId int id) {
    Optional<User> user = userService.findById(id);
    ShowUserDto showUserDto = convert(user.get());
    return new ResponseEntity<>(showUserDto, HttpStatus.OK);
}

Валидация основана только на пользовательских аннотациях, а исключения отслеживаются во всем мире. Поэтому у меня нет никакой проверки внутри методов контроллера. Они отделены друг от друга.

1 Ответ

0 голосов
/ 27 августа 2018

Это интеграционный или модульный тест?

Это модульный тест. Здесь вы тестируете свой контроллер. Но это немного больше, чем модульный тест, я бы сказал. Потому что вы тестируете не только файл вашего контроллера (UserController), но и уровень контроллера пружины (@WebMvcTest(...)).

Должен ли я проверить здесь аннотации проверки, такие как @NotNull и @Valid и другие? Если нет, как их отключить? Потому что, когда я прохожу неправильно JSON опубликовать запрос этих аннотаций по умолчанию даст мне плохо ошибка запроса в ответе.

Да, вы должны (или, скорее, вы можете). Именно это я и имел в виду, здесь вы можете протестировать не только файл контроллера, но и уровень контроллера. Вы можете отключить это, если хотите, зарегистрировав mockvalidator.

Внешние зависимости, такие как службы, высмеиваются, а класс имеет

следовательно, это не интеграционный тест.

...