Имитирующие вызовы с использованием mockito

#java #junit #mocking #mockito

#java #junit #насмешливый #mockito

Вопрос:

Я хочу, чтобы приведенная ниже цепочка вызовов была издевательской

 sessionId = genericRequestVO.getLimitRequestVOList().get(0).getSessionId();
  

Для этого я делаю

  GenericRequestVO genericRequestVO=mock(GenericRequestVO.class);
 List<LimitRequestVO> limitList=mock(LinkedList.class);
 LimitRequestVO limitRequestVO=mock(LimitRequestVO.class);
 when(genericRequestVO.getLimitRequestVOList()).thenReturn(limitList);
 when(limitList.get(0)).thenReturn(limitRequestVO);
 when(limitRequestVO.getSessionId()).thenReturn("1234");
  

но я получаю исключение NullPointerException вместо ожидаемого значения.

Пожалуйста, подскажите, почему это не работает? Есть ли какая-либо ключевая концепция, которую я упускаю из виду относительно «когда и тогда»? Я предполагаю, что мне просто нужно указать ситуацию when для макетного объекта, и это вернет желаемый результат.

Комментарии:

1. Вы уверены, что не забыли задать GenericRequestVO для вашего тестового модуля (или SUT)? Нам было бы над чем поработать, если бы вы предоставили нам весь тест с кодом настройки для тестируемого модуля.

2. Где происходит исключение нулевого указателя?