【发布时间】:2017-05-03 09:54:05
【问题描述】:
我听说 Mockito 框架非常适合用于测试目的。
谁能帮我为下面的代码写一个好的 JUnit。
@Component
public class DataIntegrityValidatorForUpdate extends EmployeeCommonValidator implements Validator {
@Autowired
private EmployeeRepository employeeRepository;
@Override
public boolean supports(Class<?> paramClass) {
return Employee.class.equals(paramClass);
}
@Override
public void validate(Object targetObject, Errors errors) {
if (!(targetObject instanceof Employee))
return;
Employee employee = (Employee) targetObject;
Long employeeId = employee.getId();
String tenantId = employee.getTenantId();
// FIXME employee.getId == null or empty then throw error employee id is
// required
if (isEmpty(employeeId)) {
errors.rejectValue("employee.id", "no value", "provide employee id for update");
return;
}
if (!employeeRepository.checkIfEmployeeExists(employeeId, tenantId)) {
// FIXME throw error employee id does not exist
errors.rejectValue("employee.id", "no value present", "employee id doesn't exist");
return;
}
validateEmployee(employee, errors);
validateAssignments(employee.getAssignments(), employeeId, tenantId, errors);
public void validateEmployee(Employee employee, Errors errors) {
// FIXME call common validator.validateEmployee
super.validateEmployee(employee, errors);
// FIXME : check only for different employees
if (checkIfColumnValueIsSameInDB("egeis_employee", "code", employee.getCode(), employee.getId(), employee.getTenantId())) {
errors.rejectValue("employee.code", "invalid", "Employee Code cannot be changed.");
}
if ((employee.getPassportNo() != null) && duplicateExists("egeis_employee", "passportNo", employee.getPassportNo(), employee.getId(), employee.getTenantId())) {
errors.rejectValue("employee.passportNo", "concurrent", "passportNo already exists");
}
if ((employee.getGpfNo() != null) && duplicateExists("egeis_employee", "gpfNo", employee.getGpfNo(), employee.getId(), employee.getTenantId())) {
errors.rejectValue("employee.gpfNo", "concurrent", "gpfNo already exists");
}
}
private void validateAssignments(List<Assignment> assignments, Long employeeId, String tenantId, Errors errors) {
validateIdsForAssignment(assignments, employeeId, tenantId, errors);
for (int index = 0; index < assignments.size(); index++) {
// validateDocumentsForNewAssignment(assignments.get(index),
// errors, index);
}
}
private void validateIdsForAssignment(List<Assignment> assignments, Long employeeId, String tenantId, Errors errors) {
Map<Long, Integer> idsMap = new HashMap<>();
for (int index = 0; index < assignments.size(); index++) {
if (assignments.get(index).getId() != null) // FIXME check if long
// gets default value of
// 0L
idsMap.put(assignments.get(index).getId(), index);
}
if (!idsMap.isEmpty())
validateEntityId(idsMap, EntityType.ASSIGNMENT, employeeId, tenantId, errors);
}
public Boolean duplicateExists(String table, String column, String value, Long id, String tenantId) {
Long idFromDb = employeeRepository.getId(table, column, value, tenantId);
if (idFromDb == 0 || id.equals(idFromDb))
return false;
return true;
}
public Boolean checkIfColumnValueIsSameInDB(String table, String column, String value, Long id, String tenantId) {
Long idFromDb = employeeRepository.getId(table, column, value, tenantId);
if (id.equals(idFromDb))
return false;
return true;
}
}
【问题讨论】:
-
这太宽泛了——你具体卡在哪里了?
-
并提示:您要求其他人花时间帮助您。然后你就走开了,没有给出任何反馈。你认为这是礼貌的行为吗?