Насмешка глубоких объектов в Мокито - PullRequest
0 голосов
/ 02 мая 2018

Я хочу добиться следующего:

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 Ответ

0 голосов
/ 02 мая 2018

Вы не можете смоделировать прямой доступ к переменной члена. Итак, у вас есть несколько вариантов:

  1. Используйте геттер.

  2. Установить переменную-член в качестве фиктивного экземпляра (a.list = mock(...) или эквивалент).

  3. В случае тривиального класса, такого как список, использование макета имеет предельное значение, поскольку вы можете более или менее напрямую настроить желаемое поведение. Так что в этом случае a.list = new ArrayList<>(); будет достаточно.

...