为模拟对象调用非模拟函数

时间:2017-01-24 20:32:09

标签: java mockito

item

在这个例子中,我为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()对我来说有点奇怪 返回null。 你能帮我理解一下这个行为吗?

1 个答案:

答案 0 :(得分:2)

如果您没有为Map提供存根,Mockito将返回一张空地图。这是一个记录在案的功能,由JavaDocs确认:

  

默认情况下,对于返回值的所有方法,mock返回null,空集合或适当的原始/原始包装器值(例如:0,false,...表示int / Integer,boolean / Boolean,...)。