@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等注入
相關文章
相關標籤/搜索