2017-08-16 25 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();が必要です。

関連する問題