[英]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);
但是我不想更改我的代碼以在任何地方使用吸氣劑。
您不能模擬直接訪問成員變量。 因此,您有幾種選擇:
使用吸氣劑。
將成員變量設置為模擬實例( a.list = mock(...)
或等效形式)。
對於像列表這樣的瑣碎類,使用模擬具有邊際價值,因為您可以或多或少地直接設置所需的行為。 因此,在這種情況下, a.list = new ArrayList<>();
就足夠了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.