На самом деле вы издеваетесь над зависимостью ValidationService
:
@MockBean
ValidationService validationService;
И вы не указываете на фиктивное поведение. Таким образом, он позволяет вызывать зависимость validatorService
без каких-либо исключений. Он работает, так как метод validateEmp()
не предназначен для возврата чего-либо, необходимого для рабочего процесса тестируемого метода.
Напоминаем, что тест с пометкой WebMvcTest
предназначен для тестирования контроллера, а не сервисного тестирования.
Вы можете удалить аннотацию @MockBean
, чтобы сделать validationService
реальной реализацией, а не фиктивным:
ValidationService validationService;
Но учтите, что лучший способ проверить унитарный ValidationService
- создать для него модульный тест.
Наконец, обратите внимание также, что еще лучшим способом было бы использовать javax.validation
API для проверки ввода.
Вы можете аннотировать в классе Employee, чтобы определить ограничения для полей, и в контроллере, чтобы проверить параметр, такой как:
import javax.validation.Valid;
...
@PostMapping(value = "/insert",consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity insertEmployee(@Valid @RequestBody Employee employe){
// validationService.validateEmp(employee); // Not required any longer
employeeService.create(employee);
return ResponseEntity.ok().build();
}