Модульное тестирование Сервлет модульного тестирования с Mockito: имитируемое поведение не выполняетсяJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Модульное тестирование Сервлет модульного тестирования с Mockito: имитируемое поведение не выполняется

Сообщение Anonymous »

Я столкнулся с проблемой при написании модульного теста для моего сервлета с использованием Mockito. Я пытаюсь имитировать поведение объекта бизнес-объекта (BO), используя doAnswer, чтобы установить тестовое значение для объекта Value Object (VO). Однако похоже, что исходное поведение объекта BO все еще выполняется вместо имитируемого поведения. Вот упрощенная версия метода doGet моего сервлета:

Код: Выделить всё

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

MyVO myVO = new MyVO();

try (Connection connection = DBConnectionPooler.getDatabaseConnection("DBNAME")) {

RequestDispatcher view;

new MyBO().getAllItems(connection, myVO);

request.setAttribute("myList", myVO.getMyList());

view = request.getRequestDispatcher("/someJSP.jsp");

view.forward(request, response);

} catch (Exception e) {

logger.error(e);

}
А вот соответствующая часть моего метода тестирования с использованием Mockito:

Код: Выделить всё

@Test
void testGetRequest() {

try {

RequestDispatcher rd = mock(RequestDispatcher.class);

HttpServletRequest request = mock(HttpServletRequest.class);

HttpServletResponse response = mock(HttpServletResponse.class);

MyBO myBO = mock(MyBO.class);

MyVO myVO = new MyVO();

List testList = new ArrayList();

testList.add(new TestObject());

testList.add(new TestObject());

doAnswer(invocation -> {

MyVO arg = invocation.getArgument(1);

arg.setMyList(testList);

return null;

}).when(myBO).getAllItems(any(Connection.class), eq(myVO));
when(request.getRequestDispatcher("/someJSP.jsp")).thenReturn(rd);

myServlet.doGet(request, response);

verify(request).setAttribute("myList", testList);

verify(rd).forward(request, response);

} catch (IOException | ServletException e) {

e.printStackTrace();

fail();
}
}
Проблема возникает при проверке request.setAttribute("myList", testList). Ожидаемое значение — testList, но фактическое значение, похоже, поступает из реальной базы данных, а не из имитируемого поведения. Я использую Mockito версии 5.11.0 и JUnit версии 5.10.2. Любые идеи или предложения о том, что может быть причиной этого. несоответствие было бы весьма признательно. Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/783 ... -executing
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Модульное тестирование с помощью Mockito и Firebase Kotlin
    Anonymous » » в форуме Android
    0 Ответы
    54 Просмотры
    Последнее сообщение Anonymous
  • Как выполнить модульное тестирование QuerydslBinderCustomizer с помощью Mockito в Spring Data JPA?
    Anonymous » » в форуме JAVA
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Модульное тестирование IOException с Java, Junit и Mockito
    Anonymous » » в форуме JAVA
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Модульное тестирование IOException с Java, JUnit и Mockito
    Anonymous » » в форуме JAVA
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Как создать отчет о покрытии кода pytest для ручного тестирования без написания примеров модульного тестирования
    Anonymous » » в форуме Python
    0 Ответы
    35 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»