spy对象和mock对象的两点区别,
@Spy 和 @Mock的
两点
区别,
@SpyBean 和 @MockBean 的两点区别:
一、默认行为的不一样
对于未指定mock的方法,spy默认会调用真实的方法,有返回值的返回真实的返回值,而mock默认不执行,有返回值的,默认返回null
二、mock的使用方式不一样
mock对象的使用方式,spy对象这样使用会直接调用该方法,因此没法这样使用,好比:
Mockito.when(restTemplate.postForObject(ArgumentMatchers.anyString(), ArgumentMatchers.any(),
ArgumentMatchers.eq(BaseWxResponse.class),ArgumentMatchers.anyString())).thenReturn(result);
spy对象的使用方式,要先执行do等方法,mock对象也能够这样使用,好比:
Mockito.doReturn(info).when(authorizationInfoService).findAuthorizationInfo(appid);
@Spy和
@SpyBean的区别,
@Mock
和 @MockBean的区别
一、spy和mock生成的对象不受spring管理
二、spy调用真实方法时,其它bean是没法注入的,要使用注入,要使用SpyBean
三、SpyBean和MockBean生成的对象受spring管理,至关于自动替换对应类型bean的注入,好比@Autowired等注入