簡體   English   中英

在Mockito中模擬深層物體

[英]Mocking deep objects in Mockito

我要實現以下目標:

Class A{
List<Class B> list;
}

Class B{
}

@Mock
A a;
when(a.list.isEmpty()).then(true); // this throws an error

通過使用這個:

@Mock(answer = Answers.RETURNS_DEEP_STUBS)
A a;

我必須使用吸氣劑:

when(a.getList().isEmpty()).then(true);

但是我不想更改我的代碼以在任何地方使用吸氣劑。

您不能模擬直接訪問成員變量。 因此,您有幾種選擇:

  1. 使用吸氣劑。

  2. 將成員變量設置為模擬實例( a.list = mock(...)或等效形式)。

  3. 對於像列表這樣的瑣碎類,使用模擬具有邊際價值,因為您可以或多或少地直接設置所需的行為。 因此,在這種情況下, a.list = new ArrayList<>(); 就足夠了。

暫無
暫無

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

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