Heads Up: Это мой первый пост здесь, пожалуйста, извините за недостающую информацию или действительно начинающие вопросы.
Так что я сейчас пытаюсь написать тесты jUnit для уже готового веб-приложения, использующего Spring (всеработает, я просто должен получить полное покрытие с тестами).У меня есть классы: «Сотрудник», «СотрудникКонтроллер» и «СотрудникМенеджмент».Я хочу протестировать функцию «registerNew», которая создает нового сотрудника с заполненной формой «EmployeeRegistrationForm», если в нем нет ошибок («Результат ошибок»).
Теперь я хочу написать тест для этого, чтобы сделатьубедитесь, что функция действительно создает новый объект «Сотрудник», который должен быть сохранен в «EmployeeRepository» с указанной формой.
Однако я не могу создать заполненную «EmployeeForm», поскольку онаабстрактный и не может быть создан.Поэтому я изо всех сил пытаюсь дать какой-либо аргумент этой функции и не знаю, как передать информацию, необходимую для теста, в тестируемую функцию.
@Service
@Transactional
public class EmployeeManagement {
private final EmployeeRepository employees;
private final UserAccountManager userAccounts;
EmployeeManagement(EmployeeRepository employees, UserAccountManager userAccounts) {
Assert.notNull(employees, "employeeRepository must not be null!");
Assert.notNull(userAccounts, "UserAccountManager must not be null!");
this.employees=employees;
this.userAccounts = userAccounts;
}
//the function that creates the employee
public Employee createEmployee(EmployeeRegistrationForm form) {
Assert.notNull(form, "Registration form must not be null!");
String type = form.getType();
Role role = this.setRole(type);
UserAccount useraccount = userAccounts.create(form.getUsername(), form.getPassword(), role);
useraccount.setFirstname(form.getFirstname());
useraccount.setLastname(form.getLastname());
return employees.save(new Employee(form.getNumber(), form.getAddress(), useraccount));
}
@Controller
public class EmployeeController {
private final EmployeeManagement employeeManagement;
EmployeeController(EmployeeManagement employeeManagement) {
Assert.notNull(employeeManagement, "userManagement must not be null!");
this.employeeManagement = employeeManagement;
}
@PostMapping("/registerEmployee")
@PreAuthorize("hasRole('ROLE_ADMIN')")
String registerNew(@Valid EmployeeRegistrationForm form, Errors result) {
if (result.hasErrors()) {
return "registerEmployee";
}
employeeManagement.createEmployee(form);
return "redirect:/";
}
public interface EmployeeRegistrationForm {
@NotEmpty(message = "{RegistrationForm.firstname.NotEmpty}")
String getFirstname();
@NotEmpty(message = "{RegistrationForm.lastname.NotEmpty}")
String getLastname();
@NotEmpty(message = "{RegistrationForm.password.NotEmpty}")
String getPassword();
@NotEmpty(message = "{RegistrationForm.address.NotEmpty}")
String getAddress();
@NotEmpty(message = "{RegistrationForm.number.NotEmpty}")
String getNumber();
@NotEmpty(message = "{RegistrationForm.type.NotEmpty}")
String getType();
@NotEmpty(message = "{RegistrationForm.username.NotEmpty}")
String getUsername();
}