簡體   English   中英

模擬可選參數時出現空指針異常

[英]Null Pointer Exception while mocking Optional Parameters

我的代碼是以下形式:

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()。get())。thenReturn(accessor); 我不知道為什么!

任何線索都會非常有幫助:)

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");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM