Как имитировать объект. GetMap (). Get ("String_Key_to_return_Object")

Как я могу высмеять такую ​​ситуацию

   ObjectOfBeanClass.getMapObject().get("String_Key_To_Return_Object")

Я пробую следующие способы:

1) when(ObjectOfBeanClass.getMapObject().get("String_Key_To_Return_Object")).thenReturn(Object);

In this Case, it throws an exception that getMapObject() Should return a Map_Object

2) doReturn(Object).when(ObjectOfBeanClass.getMapObject()).thenReturn(Object);

in this case, it shows following error org.mockito.exceptions.misusing.UnfinishedStubbingException: Unfinished stubbing detected here:

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
304
1

Ответы 1

Вы имитируете карту в целом и вызов в два этапа.

Map<String> map = mock(Map.class);
when(map.get(yourString)).thenReturn(object);
when(objectOfBeanClass.getMap()).thenReturn(map);

Или, если ваш испытуемый - objectOfBeanClass, позвоните

objectOfBeanClass.setMap(map);

Как указывает Хрилис, вы также можете создать реальный экземпляр Map вместо того, чтобы издеваться над ним:

Map<String> map = Collections.singletonMap("String_Key", object);
when(objectOfBeanClass.getMap()).thenReturn(map);

что нормально, если вы не хотите использовать карту для verify() или чего-то в этом роде.

Практически никогда не стоит издеваться над интерфейсом вроде Map. Просто используйте Collections.singletonMap или настоящий HashMap.

chrylis -cautiouslyoptimistic- 02.05.2018 07:51

@chrylis Это правда, хотя вы можете использовать карту для проверки, которая возможна только на имитации. Я отредактировал ответ.

daniu 02.05.2018 08:42

Вообще говоря, однако, если информация на карте необходима, она будет иметь какое-то отражение в остальном, что происходит (например, она будет передана исходящему вызову метода в сервисе, который имитируется или доступен через геттер. на тестируемом классе). Если он не оказывает видимого влияния на поведение, вероятно, его просто нужно полностью удалить.

chrylis -cautiouslyoptimistic- 02.05.2018 19:24

Другие вопросы по теме