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等注入