我得到以下转换异常:
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
,所以这个错误对我来说完全没有意义。
如果有人有同样的问题,它对我有用
当(repository.findById(任何()))thenReturn(Optional.of(元件));