Я новичок в Mockito и пытаюсь издеваться над методом обслуживания. Однако Mockito не может правильно имитировать функцию.
Вот часть тестового кода:
@Mock
ConditionalLimitDao conditionalLimitDao;
@InjectMocks
ConditionalLimitFilingServiceImpl conditionalLimitFilingService;
Mockito.when(conditionalLimitDao.getAllConditionalLimitProductGroups()).thenReturn(Arrays.asList(clpg1));
Класс:
public class ConditionalLimitFilingServiceImpl implements ConditionalLimitFilingService {
@Inject
private ConditionalLimitDao conditionalLimitDao;
@Override
public List<ConditionalLimitFiling> getConditionalLimitFiling(String filingMonth, Date reportDate)
throws SQLException, RemoteException {
conditionalLimitProductGroups = getConditionalLimitProductGroups();
return something;
}
private List<ConditionalLimitProductGroup> getConditionalLimitProductGroups() {
return conditionalLimitDao.getAllConditionalLimitProductGroups();
}
}
Я ожидаю, что getAllConditionalLimitProductGroups() вернет непустой список. Однако он возвращает пустой список. Кто-нибудь может помочь?
Нет, это не пусто. clpg1 — это объект типа ConditionalLimitProductGroup.
что возвращает Arrays.asList(clpg1) сам по себе?
Попробуйте пройти тест после удаления файла @Inject. Таким образом, вы можете гарантировать, что имитируемый объект не будет переопределен тем, кто обрабатывает инъекцию (при условии, что ваши тесты выполняются в контексте, где инъекция включена).




Я думаю, вы забыли добавить эту строку
MockitoAnnotations.initMocks(this);
Эта строка кода должна быть помещена в метод @Before для инициализации макетов для каждого теста.
Использование Runner/Extension должно обеспечивать то же самое, но это может зависеть от версии JUnit и Mockito.
тот факт, что он возвращает пустой список, а не нуль, показывает, что он издевается, является ли clpg1 пустым массивом?