2017-08-16 198 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();