基本存储库,它是所有存储库的父类
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());
}
}
断言错误始终是ID不存在。但是我在模拟方法中设置了“ return true”。显然,existingById()返回false。关于这个问题有什么想法吗?谢谢!