Java ClassCastException, которая не имеет абсолютно никакого смысла - PullRequest
0 голосов
/ 05 июля 2018

Я получаю следующее исключение при касте:

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, и поэтому эта ошибка для меня абсолютно бессмысленна.

1 Ответ

0 голосов
/ 23 февраля 2019

В случае, если у кого-то есть такая же проблема, у меня это работает так

, когда (repository.findById (любой ())) thenReturn (Optional.of (элемент));.

...