Невозможно привести объект '20001' с классом 'java .lang.Long' к классу * java .util.Optional ' - PullRequest
0 голосов
/ 07 апреля 2020

Я пишу groovy тест для обслуживания, вот мой groovy код

class SharedListServiceSpec extends Specification {

    private static SharedListService sharedListService
    private static SharedListRepository sharedListRepository
    private static Optional<SharedList> sharedListDetails
    private static List<User> userDetails
    private static Long sharedListId
    Optional<User> userDetails
    private static String sharedListJsonResponse = "{\"sharedListId\":\"20001\",\"sharedListName\":\"Id Sequence3\",\"sharedListType\":\"SharedList\",\"userId\":\"\"100001,\"}"
    private static String message="Successful"

    def void setupSpec(){
        sharedListRepository=Mock()
        sharedListDetails = new ArrayList<>()
        sharedListService = new SharedListService(sharedListRepository)
        sharedListRepository.findById(*_) >> { sharedListId } >> sharedListJsonResponse

    }
def "test sharedList details when sharedListId is not null"() {
        given:
       sharedListId=20001l
        when:
        def sharedListResponse=sharedListService.getListDetail(sharedListId,userDetails)
        then:
        sharedListResponse.getResponseMetaData().message==message
    }
}

Класс обслуживания

public class SharedListService implements ISharedListService{
    private final SharedListRepository sharedListRepository;

    @Override
    public SharedListResponse getListDetail(Long sharedListId, Optional<User> userDetails) {

        SharedListDTO sharedListDTO = SharedListDTO.builder().build();
        Optional<SharedList> sharedList = sharedListRepository.findById(sharedListId);
        if(sharedList.isPresent()){
            SharedList list = sharedList.get();
            if(Objects.nonNull(list)) {
                BeanUtils.copyProperties(list, sharedListDTO);
            }
        }
        return SharedListResponse.builder().sharedList(sharedListDTO).build();
    }
}

, получая такую ​​ошибку

Cannot cast object '20001' with class 'java.lang.Long' to class 'java.util.Optional'
org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object '20001' with class 'java.lang.Long' to class 'java.util.Optional'
    at org.spockframework.mock.response.CodeResponseGenerator.doRespond(CodeResponseGenerator.java:42)
    at org.spockframework.mock.response.SingleResponseGenerator.respond(SingleResponseGenerator.java:31)
    at org.spockframework.mock.response.ResponseGeneratorChain.respond(ResponseGeneratorChain.java:45)
    at org.spockframework.mock.runtime.MockInteraction.accept(MockInteraction.java:76)
    at org.spockframework.mock.runtime.MockInteractionDecorator.accept(MockInteractionDecorator.java:46)
    at org.spockframework.mock.runtime.InteractionScope$1.accept(InteractionScope.java:41)
    at org.spockframework.mock.runtime.MockController.handle(MockController.java:39)
    at org.spockframework.mock.runtime.JavaMockInterceptor.intercept(JavaMockInterceptor.java:74)
    at org.spockframework.mock.runtime.DynamicProxyMockInterceptorAdapter.invoke(DynamicProxyMockInterceptorAdapter.java:34)
    at com.thermofisher.sharedlist.service.SharedListService.getListDetail(SharedListService.java:29)
    at com.thermofisher.sharedlist.service.SharedListServiceSpec.test sharedList details when sharedListId is not null(SharedListServiceSpec.groovy:40)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...