2017-08-16 193 views
2

我試圖模擬一個類的非靜態方法。我正在測試同一類的一種方法。但是它返回一個nullPointerException。不知道我在這裏做錯了什麼。任何幫助將不勝感激。Mockito doReturn拋出nullPointerException異常

我的代碼:

public class B2P { 
    protected Future<List<FeedObject>> evaluate (NodeContext 
     nodeContext) throws Exception { 
     Map<BoardQuery, Future<List<FeedObject>>> resultsFuturesMap = 
     getResultsFutureMap(boardsQuery, 
     query, generatorParams, resourceContainer); 

     return resultsFuturesMap; 
    } 

    public Map<BoardQuery, Future<List<FeedObject>>> 
     getResultsFutureMap(){ 
     DoSomething; 
    } 
} 

我的測試類:

public class testClass { 
    public void test() { 
    B2P b2p = new B2P(); 
    B2P mockSpy = Mockito.spy(b2p); 

    doReturn(ImmutableMap.of(
    new BoardQuery().setBoardId(102L).setSignatureWeights(
     ImmutableMap.of("s3", 1.0, "s4", 1.0, "s5", 1.0)), 
    Future.value(ImmutableList.of(
     new FeedObject().setObjectId(904L).setObjectDetails(new 
      ObjectDetails() 
      .setCommonObjectDetails(new CommonObjectDetails()) 
      .setPinDetails(new 
      PinDetails().setSource(FeedSourceType.FANTASIO))), 
     new FeedObject().setObjectId(903L).setObjectDetails(new 
      ObjectDetails() 
      .setCommonObjectDetails(new CommonObjectDetails()) 
      .setPinDetails(new PinDetails().setSource(FeedSourceType.FANTASIO))), 
     new FeedObject().setObjectId(902L).setObjectDetails(new ObjectDetails() 
      .setCommonObjectDetails(new CommonObjectDetails()) 
      .setPinDetails(new PinDetails().setSource(FeedSourceType.FANTASIO))))))) 
    .when(mockSpy).getResultsFutureMap(any(), any(), any(), any()); 

    .... 
    b2p.evaluate(); 

}}

上午我嘲笑這個方法在錯誤的道路?

+0

該方法實際上被調用,並沒有被嘲笑。 –

回答

0

b2p.evaluate();叫你的正常的實例,而不是你的嘲笑實例。

要調用你的模擬實例,你需要mockSpy.evaluate();