1) Попытайтесь настроить насмешливость один на один вместо каскадных вызовов:
when(mongoTemplate.query(Department.class)).thenReturn(executableDepartment);
when(executableDepartment).distinct("employees")).thenReturn(distinctDepartment);
when(distinctDepartment.all()).thenReturn(obj);
executableDepartment
и distinctDepartment
также должны быть насмешливыми Конечно.
2) Не издевайтесь над интерфейсом списка. Заполните его предварительно сконфигурированными данными и дайте SUT работать с ним как есть. Sp mocking должен использоваться только в этой части:
mongoTemplate.query(Department.class).distinct("employees").all();
Таким образом, часть, которая предоставляет данные. Но оставьте фактическую логику c, чтобы она работала как есть.