gpt4 book ai didi

java - 在 Mockito 中模拟深层对象

转载 作者:行者123 更新时间:2023-12-02 02:10:14 27 4
gpt4 key购买 nike

我想实现以下目标:

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;

我必须使用 setter/getter :

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

但我不想更改我的代码以在各处使用 setter/getter ..

最佳答案

您不能模拟对成员变量的直接访问。所以你有几个选择:

  1. 使用 setter/getter 。

  2. 将成员变量设置为模拟实例(a.list = mock(...)或等效实例)。

  3. 对于像列表这样的简单类,使用模拟有边际值(value),因为您或多或少可以直接设置您想要的行为。所以在这种情况下,a.list = new ArrayList<>();就足够了。

关于java - 在 Mockito 中模拟深层对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50124633/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com