首頁 > Java > java教程 > Mockito:「doReturn()」與「when()」:什麼時候應該對間諜物件使用which?

Mockito:「doReturn()」與「when()」:什麼時候應該對間諜物件使用which?

Patricia Arquette
發布: 2024-11-28 18:19:15
原創
1003 人瀏覽過

Mockito: `doReturn()` vs. `when()`: When Should You Use Which with Spied Objects?

Mockito:理解doReturn() 和when() 之間的細微差別

使用類比框架Mockito 增強測試能力時,開發人員經常會遇到doReturn( )和when() 方法。雖然這兩種方法都用於存根方法調用,但在處理間諜物件(用 @Spy 註釋)時,它們之間存在細微的區別。

when(...).thenReturn(...) 與doReturn(...).when(...)

when(...).thenReturn (...):

  • 建立一個返回指定值之前真正的方法呼叫。
  • 如果被呼叫的方法拋出異常,則必須對其進行處理或模擬

doReturn(...).when(...):

  • 完全避免實際的方法呼叫。

實際範例

考慮以下內容MyClass:

public class MyClass {
    protected String methodToBeTested() {
        return anotherMethodInClass();
    }

    protected String anotherMethodInClass() {
        throw new NullPointerException();
    }
}
登入後複製

測試間諜

doRet urn(...).when(...):

@Spy
private MyClass myClass;

// Works as expected
doReturn("test").when(myClass).anotherMethodInClass();
登入後複製

when(...).thenReturn(.. .):

// Throws a NullPointerException
when(myClass.anotherMethodInClass()).thenReturn("test");
登入後複製

在這種情況下,doReturn() 確保異常避免了 anotherMethodInClass(),同時仍傳回所需的值。相較之下,when() 會觸發實際的方法調用,導致拋出 NullPointerException。

因此,在處理間諜物件時,選擇 doReturn() 和 when() 取決於您是否要呼叫實際方法或完全繞過它。

以上是Mockito:「doReturn()」與「when()」:什麼時候應該對間諜物件使用which?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板