JUnit тест ответа JSP
Используйте этот код для ответа сервлета html:
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
RequestDispatcher dispatcher = request.getRequestDispatcher("/projects.jsp");
dispatcher.forward(request, response);
}
Метод работает хорошо и возвращается в браузер HTML, созданный projects.jsp. Теперь я хочу протестировать этот HTML-ответ, но я могу получить вывод JSP.
`
@Test
public void doGetTest() {
HttpServletResponse response = Mockito.mock(HttpServletResponse.class);
HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
RequestDispatcher requestDispatcher = Mockito.mock(RequestDispatcher.class);
HttpSession session = Mockito.mock(HttpSession.class);
StringWriter stringWriter = new StringWriter();
PrintWriter printWriter = new PrintWriter(stringWriter);
try {
when(response.getWriter()).thenReturn(printWriter);
when(request.getSession()).thenReturn(session);
when(request.getRequestDispatcher("/projects.jsp")).thenReturn(requestDispatcher);
} catch (IOException ex) {
fail(ex.getMessage());
}
try {
new Projects().doGet(request, response);
verify(requestDispatcher).forward(request, response);
} catch (ServletException | IOException ex) {
fail(ex.getMessage());
}
printWriter.flush();
System.err.println(stringWriter.getBuffer().toString().trim());
}
`
stringWriter.getBuffer (). ToString(). дифферент ()
здесь не вернуть HTML-код, просто пустая строка всегда. Я попытался спросить Google и здесь, но я не могу найти примеры работы для JUnit и Java 8 (нашел Selenium, например). Этот код теста хорошо работает без jsp (ответ сервлета на запись response.getWriter(). Println ()). Скажите, пожалуйста, как я могу получить ответ JSP HTML в этом случае?