스프링 4.3.8.RELEASE를 사용하고 있습니다. 특정 금지 된 오류에 대한 오류 메시지를 설정하려고합니다. 나는 내 컨트롤러에 이것을 가지고있다. "response"는 "javax.servlet.HttpServletResponse"유형입니다.어떻게 콘텐츠를 HttpServletResponse 버퍼에 출력합니까?
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
response.setContentLength(errorMsg.length());
byte[] buffer = new byte[10240];
final OutputStream output = response.getOutputStream();
output.write(buffer, 0, errorMsg.length());
output.flush();
그러나, 내용이 돌려지고하지 않는 것, 적어도 나는
final MvcResult result = mockMvc.perform(get(contextPath + "/myurl")
.contextPath(contextPath)
.principal(auth)
.param("param1", param1)
.param("param2", param2))
.andExpect(status().isForbidden())
.andReturn();
// Verify the error message is correct
final String msgKey = "error.code";
final String errorMsg = MessageFormat.format(resourceBundle.getString(msgKey), new Object[] {});
Assert.assertEquals("Failed to return proper error message.", errorMsg, result.getResponse().getContentAsString());
어설 션이 말하는 실패 ... 내 단위 테스트에서 볼 수없는 응답 문자열 비어있었습니다. 응답을 HttpServletResponse 버퍼에 다시 쓰는 올바른 방법은 무엇입니까?
예. 줄을보십시오 - "output.write (buffer, 0, errorMsg.length());" – Dave
아니요,'errorMsg.length()'바이트를'buffer'에서 0으로 시작하여 출력합니다. 그러나'errorMsg'를 복사하지 않았기 때문에'buffer'는 모두 0입니다. –