Код: Выделить всё
@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);
}
Код: Выделить всё
@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