@spy 和 @mock 区别
spy的情况是会创建一个真实实例,方法都是真实的,而mock 创建的实例,方法都是虚的,否返回null之类的默认值。
如果@spy再加上 @InjectMocks 那么,那么表示 对象中的属性对象(一些用@resource标记的对象)需要从@spy时上下文中,给出这些属性的对象,否则会是null的。
@spy的对象上,要改动某个方法不能这样
when(user.get(2)).thenreturn(null),这样会真的发起一个get的方法调用
而应该这样用:
doreturn(null).when(user).get(2);