Исключение нулевого указателя при насмешке Необязательные параметры - PullRequest
0 голосов
/ 15 сентября 2018

Мой код имеет вид:

public String getDeliveryDestinations(final RequestContext requestContext {
    final Accessor accessor = requestContext.getAccessor().get();

    final GroupAccessor groupAccessor = accessor.getGroupAccessor();

    final String groupId = groupAccessor.getGroupId();


    if(groupId.equals("s1") return "Type1";
    else return "type 2";


}

Для проверки я написал следующее:

@Test
public void getDestinationsDestinations_empty() throws Exception {


    Accessor accessor = mock(Accessor.class);
    GroupAccessor groupAccessor = mock(GroupAccessor.class);
    //*mockRequestContent is Mocked*
    when(mockRequestContext.getAccessor().get()).thenReturn(accessor);
    when(accessor.getGroupAccessor()).thenReturn(groupAccessor);
    when(groupAccessor.getGroupId()).thenReturn("s1");

    String destinationResult = provider.getDeliveryDestinations(mockRequestContext);
    assertEquals(destinationResult,"Type1");

}

Я получаю NPE в когда (mockRequestContext.getAccessor () получаем ().) thenReturn (сбруя). Я не знаю почему!

Любые выводы будут очень полезны:)

1 Ответ

0 голосов
/ 15 сентября 2018

когда getAccessor() нужно вернуть опционально, вы можете сделать это так:

Accessor accessor = mock(Accessor.class);
GroupAccessor groupAccessor = mock(GroupAccessor.class);

Optional<Accessor> optAccessor = Optional.of(accesor)
when(mockRequestContext.getAccessor()).thenReturn(optAccessor)
when(accessor.getGroupAccessor()).thenReturn(groupAccessor);
when(groupAccessor.getGroupId()).thenReturn("s1");
...