В последнее время я задал пару вопросов, связанных с jUnit и Mockito, и я все еще очень стараюсь понять это. Учебники предназначены для очень простых примеров, поэтому я стараюсь расширить свои тестовые примеры для работы в своих классах.
В настоящее время я пытаюсь написать несколько тестовых примеров для метода, который у меня есть в одном из моих агентов в webapp. Метод взаимодействует с несколькими другими методами внутри агента для проверки некоторых объектов. Я просто хочу протестировать этот метод прямо сейчас.
Вот что я пытался сделать:
-
Создайте объект Mockito моего агента следующим образом:
MyProcessingAgent mockMyAgent = Mockito.mock(MyProcessingAgent.class);
-
Настроить заглушки (надеюсь, правильный термин) с помощью Mockito.when вот так:
Mockito.when(mockMyAgent.otherMethod(Mockito.any(arg1)).thenReturn(requiredReturnArg);
-
Попробуйте выполнить мой метод следующим образом:
List myReturnValue = mockMyAgent.methodThatNeedsTestCase();
Я ожидал вещей в myReturnValue
, но вместо этого получил 0, поэтому я попытался отладить. Когда я вызываю метод, он никогда не выполняется. У меня есть точка отладки в первой строке метода, которая никогда не затрагивается.
Если я хочу выполнить код в одном методе класса, но заставьте другие методы в классе (который пытается взаимодействовать с базами данных во внешнем мире), чтобы возвращать поддельные значения. Возможно ли это с Mockito?
Похоже, что мой текущий метод подхода - это не правильный стиль тестирования, но я не уверен, как двигаться вперед. Могу ли я высмеивать свой класс и запускать один метод как обычный, в то время как другие методы затуманиваются, чтобы возвращать мои данные, чтобы мне не приходилось иметь дело с доступом к данным во время тестирования этого метода?