簡體   English   中英

Mockito、mock 類和真正調用 void 方法

[英]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(...)的返回值上調用要模擬的實際方法。

另請參閱此答案: How to make mock to void methods with mockito

試試這個方法:

doCallRealMethod().when(adesioneMerger).merge(
    Matchers.any(AdesioneBean.class),
    Matchers.any(Adesione.class), 
    Matchers.any(ServiceResultBean.class);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM