Мокито не издевается

Я новичок в 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 пустым массивом?

David 01.07.2019 09:51

Нет, это не пусто. clpg1 — это объект типа ConditionalLimitProductGroup.

Shruti Seth 01.07.2019 09:53

что возвращает Arrays.asList(clpg1) сам по себе?

David 01.07.2019 09:58

Попробуйте пройти тест после удаления файла @Inject. Таким образом, вы можете гарантировать, что имитируемый объект не будет переопределен тем, кто обрабатывает инъекцию (при условии, что ваши тесты выполняются в контексте, где инъекция включена).

second 01.07.2019 09:59
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
4
556
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я думаю, вы забыли добавить эту строку

MockitoAnnotations.initMocks(this);

Эта строка кода должна быть помещена в метод @Before для инициализации макетов для каждого теста.

Использование Runner/Extension должно обеспечивать то же самое, но это может зависеть от версии JUnit и Mockito.

second 01.07.2019 10:03

Другие вопросы по теме