В настоящее время я пишу модульные тесты для устаревшего кода. Мне нужно смоделировать объект для «doReturn» при вызове функции этого объекта. Однако этот объект создается в той же строке, в которой он вызывается, и никогда не присваивается переменной. Есть ли способ смоделировать это возвращаемое значение, не касаясь исходного кода?
Устаревшая строка кода, содержащая вызов функции, которая должна возвращать макетированный список:
List<Map<String, String>> referenceDataList = new ReferenceDataInquiryMapper().execute(referenceDataInquiry);
Моя попытка издеваться над этим вызовом "execute":
List<Map<String, String>> referenceDataList = new ArrayList<Map<String, String>>();
//Add data to referenceDataList
ReferenceDataInquiryMapper referenceDataInquiryMapper = PowerMockito.mock(ReferenceDataInquiryMapper.class);
PowerMockito.doReturn(referenceDataList).when(referenceDataInquiryMapper,"execute",Mockito.any());
Я также попытался:
PowerMockito.doReturn(referenceDataList).when(new ReferenceDataInquiryMapper(),"execute",Mockito.any());
Что выдает ошибку PowerMockito
А также это:
PowerMockito.doReturn(referenceDataList).when(PowerMockito.mock(ReferenceDataInquiryMapper.class),"execute",Mockito.any());
Который выдает то же исключение, что и моя первая попытка.
Вместо того, чтобы возвращать значение Mock, первая строка, размещенная выше, пытается создать реальный новый объект при запуске теста и выдает исключение. Можно ли на самом деле издеваться над этим кодом?
~ Спасибо