Я пытаюсь выполнить модульное тестирование своего уровня обслуживания, используя mockito, имеющий подключение к базе данных через уровень репозитория.
Мой тестовый пример:
@InjectMocks
private EmployeeService employeeService;
@Mock
private EmployeeRepository employeeRepository;
@Test
public void getActionFromEmployeeIdTest() throws ActionException {
//setup
when(employeeRepository.getActionsByEmployeeId(anyLong()).thenReturn(EmployeeEntity);
// exercise
List<Employee> result = employeeService.getActionsByEmployeeIdService(101);
//verify
assertEqual(EmployeeEntity, result);
}
Уровень обслуживания:
@Service
public class EmployeeService {
@Override
public List<EmployeeUser> getActionsByEmployeeIdService(long employeeId) {
Employee employee = employeeRepository.findByEmployeeIdId(employeeId);
List<EmployeeUser> actions = employeeUserRepository.getActionsByEmployeeId(employeeId);
return actions;
}
Уровень репозитория:
@Repository
public interface EmployeeUserRepository extends JpaRepository<EmployeeUser,Long> {
@Transactional
@Query(value = "Select e from EmployeeUser e where e.employeeId = :employeeId" )
List<EmployeeUser> getActionsByEmployeeId(@Param("employeeId") long employeeId);
}
Я использую @InjectMocks
для employeeService
и @Mock
для employeeRepository
.
result
, похоже, возвращается ноль. Могу ли я как-нибудь вернуть в тесте ненулевое значение?