2017-01-24 4 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() возвращает null. Не могли бы вы помочь мне понять это поведение?Вызов неизмеримых функций для издеваемого объекта

ответ

2

Если вы не предоставили заглушку для Map, Mockito вернет пустую карту. Это документально функцией, подтверждается JavaDocs:

По умолчанию для всех методов, которые возвращают значение, макет возвращает нуль, пустой коллекции или соответствующий примитив/примитивное значение обертки (например: 0, ложь, ... для int/Integer, boolean/Boolean, ...).

Смежные вопросы