2017-01-24 32 views
2
import java.lang.Math; 
import static org.mockito.Mockito.*; 
import java.util.Map; 
import java.util.HashMap; 

public class MyClass 
{ 
    class Test { 
     int a = 10; 
     Test() {} 
    }  
    class OtherClass 
    { 
    public OtherClass() 
    {} 

    Map<String, Double> f() { 
     System.out.print("Just for testing"); 
     return new HashMap<>(); 
    } 

    Test getT() { 
     return new Test(); 
    } 

    } 

    public static void main(String[] args) 
    { 
    OtherClass c = mock(OtherClass.class); 
    Map<String, Double> test = c.f(); 
    System.out.println(test.size()); 
    MyClass.Test t = c.getT(); 
    System.out.println(t); 
    } 
} 

この例では、OtherClassタイプのモックオブジェクトを作成しました。 c.f()が空のマップを返すと私は奇妙なのですが、その間にc.getT() を返します。 この現象を理解するのに手伝ってください。モックされたオブジェクトのモックされていない関数を呼び出す

答えて

2

Mapにスタブを指定しないと、Mockitoは空のマップを返します。これはJavaDocsによって確認され、文書化機能、次のとおりです。

デフォルトでは、値を返すすべてのメソッドのために、モック戻りがnull、空のコレクションまたは適切なプリミティブ/プリミティブラッパー値(例:0、偽、 ... int/Integer、ブール値/ブール値、...)。

関連する問題