@SpyBean 和 @MockBean 区别,以及@Spy 和 @Mock的区别

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等注入
相关文章
相关标签/搜索