我遇到以下强制转换异常:
java.lang.ClassCastException: com.model.Bucket cannot be cast to java.util.Optional
at com.service.BucketServiceTest.testGetById(BucketServiceTest.java:65)
但是,我的代码中没有任何地方试图投射到Optional
:
@Test
public void testGetById() {
Mockito.when(bucketRepository.findById(anyLong())).thenAnswer(invocationOnMock -> testBucket);
String bucketName = bucketService.getBucketById(testBucket.getId()).getName();
assertEquals(bucketName, testBucket.getName());
}
第65行是String bucketName = bucketService.getBucketById(testBucket.getId()).getName();
getBucketById
方法返回类型bucket
而不是类型optional
:
@Transactional(readOnly = true)
public Bucket getBucketById(long id) {
return (Bucket) bucketRepository.findById(id).orElse(null);
}
因此,我不知道将Bucket
强制转换为Optional
的位置,因此这个错误对我来说毫无意义。
答案 0 :(得分:0)
如果有人遇到相同的问题,它对我这样工作
当(repository.findById(any()))。thenReturn(Optional.of(element));