[英]Mockito, mock class and real call void Methods
正如標題所暗示的,問題是這樣的:我有AdesioneMerger
的模擬,我必須調用真正的merge
方法。 merge
是一個空方法。
這是錯誤的:
adesioneMerger = Mockito.spy(AdesioneMerger.class);
Mockito.when(adesioneMerger.merge(
Matchers.any(AdesioneBean.class),
Matchers.any(Adesione.class),
Matchers.any(ServiceResultBean.class))
).ThenCallRealMethod();
有什么錯誤?
對於 void 方法,請使用替代 API:
Mockito.doCallRealMethod()
.when(adesioneMerger).merge(
Matchers.any(AdesioneBean.class),
Matchers.any(Adesione.class),
Matchers.any(ServiceResultBean.class));
問題是Mockito.when()
需要一個參數(Java 中沒有空類型的參數)。 替代 API 通過在模擬類型上調用when()
來解決此問題,並when()
when(...)
的返回值上調用要模擬的實際方法。
試試這個方法:
doCallRealMethod().when(adesioneMerger).merge(
Matchers.any(AdesioneBean.class),
Matchers.any(Adesione.class),
Matchers.any(ServiceResultBean.class);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.