базовый репозиторий, который является родительским классом всех репозиториев
public interface BaseRepository<T extends Base, K extends Serializable> extends JpaRepository<T, K> {
}
Класс репозитория тестовых наборов
@Repository
public interface TestCaseRepository extends BaseRepository<TestCase, UUID> {
}
абстрактный базовый класс обслуживания
public abstract class BaseServiceImpl<T extends Base> implements BaseService<T> {
protected BaseRepository<T, UUID> repository;
public T findById(UUID id) {
Optional<T> optional = repository.findById(id);
if (optional.isPresent()) {
return optional.get();
}
return null;
}
@Transactional
public boolean delete(UUID id) throws Exception {
if (repository.existsById(id)) {
repository.deleteById(id);
} else {
throw new EntityNotFoundException("id: " + id.toString() + " does not exist.");
}
return !repository.existsById(id);
}
}
Добавитьследующий код в модульном тесте
testCaseRepository = Mockito.mock(TestCaseRepository.class);
when(testCaseRepository.saveAndFlush(isA(TestCase.class))).thenReturn(testCase);
when(testCaseRepository.existsById(UUID.fromString("11111111-1111-1111-1111-111111111111"))).thenReturn(true);
ReflectionTestUtils.setField(testCaseService, "testCaseRepository", testCaseRepository);
Когда я вызываю метод testCaseRepository.existsById () в методе тестирования, как показано ниже
@Test
public void testDelete() {
try {
Assert.assertFalse(testCaseService.delete(UUID.fromString("11111111-1111-1111-1111-111111111111")));
} catch (Exception e) {
Assert.fail(e.getMessage());
}
}
Ошибка подтверждения всегда заключается в том, что идентификатор не существовал.Но я установил «вернуть истину» в методе mock.Очевидно, existById () вернул false.есть ли идеи по этому вопросу?Спасибо!