Есть ли причины делать модульный тест контроллера без @WebMvcTest?

Почти все источники которые мне приходилось читать пишут, что тест с аннотацией @WebMvcTest является интеграционным, не модульным. Какие есть причины создавать модульные тесты без этой аннотации, без MockMvc? Т.е. явно вызывая методы контроллера. Я так понимаю, основной аргумент в таком способе может быть только скорость выполнения теста, т.к. появляются неудобства, например, как именно в тесте использовать BindingResult.

Пример модульного теста, как мне это видится:

@ExtendWith(MockitoExtension.class)
class EmployeeControllerTest {

    @Mock
    private EmployeeService employeeService;

    @Mock
    private BeanPropertyBindingResult bindingResult;

    @InjectMocks
    private EmployeeController employeeController;

    @SneakyThrows
    @Test
    public void givenEmployeeDTO_whenCreateEmployee_thenReturnIsCreated(){
        // given
        employeeController.setEmployeeModelMapper(new ModelMapper());
        given(bindingResult.hasErrors()).willReturn(false);

        var employeeId = 0;
        var employeeDTO = EmployeeDTO.builder().id(employeeId).build();

        // when
        var result = employeeController.create(employeeDTO, bindingResult);

        // then
        assertThat(result.getStatusCode()).isEqualTo(HttpStatus.CREATED);
        assertThat(result.getHeaders().getLocation().getPath()).isEqualTo("/employee/" + employeeId);
    }
}

Ответы (0 шт):