Spring MVC 컨트롤러 테스트-결과 JSON 문자열 인쇄
안녕하세요 저는 Spring mvc 컨트롤러가 있습니다.
@RequestMapping(value = "/jobsdetails/{userId}", method = RequestMethod.GET)
@ResponseBody
public List<Jobs> jobsDetails(@PathVariable Integer userId,HttpServletResponse response) throws IOException {
try {
Map<String, Object> queryParams=new LinkedHashMap<String, Object>();
queryParams.put("userId", userId);
jobs=jobsService.findByNamedQuery("findJobsByUserId", queryParams);
} catch(Exception e) {
logger.debug(e.getMessage());
response.sendError(HttpServletResponse.SC_BAD_REQUEST);
}
return jobs;
}
이것을 실행할 때 JSON 문자열이 어떻게 보이는지보고 싶습니다. 이 테스트 케이스를 작성했습니다
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration("classpath:webapptest")
@ContextConfiguration(locations = {"classpath:test-applicationcontext.xml"})
public class FindJobsControllerTest {
private MockMvc springMvc;
@Autowired
WebApplicationContext wContext;
@Before
public void init() throws Exception {
springMvc = MockMvcBuilders.webAppContextSetup(wContext).build();
}
@Test
public void documentsPollingTest() throws Exception {
ResultActions resultActions = springMvc.perform(MockMvcRequestBuilders.get("/jobsdetails/2").accept(MediaType.APPLICATION_JSON));
System.out.println(/* Print the JSON String */); //How ?
}
}
JSON 문자열을 얻는 방법?
Spring 3, codehause Jackson 1.8.4를 사용하고 있습니다.
이 코드를 시도하십시오.
resultActions.andDo(MockMvcResultHandlers.print());
트릭은 andReturn()
MvcResult result = springMvc.perform(MockMvcRequestBuilders
.get("/jobsdetails/2").accept(MediaType.APPLICATION_JSON)).andReturn();
String content = result.getResponse().getContentAsString();
나를 위해 아래 코드를 사용할 때 작동했습니다.
ResultActions result =
this.mockMvc.perform(post(resource).sessionAttr(Constants.SESSION_USER, user).param("parameter", "parameterValue"))
.andExpect(status().isOk());
String content = result.andReturn().getResponse().getContentAsString();
그리고 그것은 작동했습니다! :디
내 대답으로 다른 사람을 도울 수 있기를 바랍니다.
MockMvc
인스턴스를 설정할 때 각 테스트 방법의 인쇄 응답을 활성화 할 수 있습니다 .
springMvc = MockMvcBuilders.webAppContextSetup(wContext)
.alwaysDo(MockMvcResultHandlers.print())
.build();
.alwaysDo(MockMvcResultHandlers.print())
위 코드 의 일부를 확인하십시오. 이렇게하면 각 테스트 메서드에 대해 인쇄 처리기를 적용하지 않아도됩니다.
If you are testing the Controller, you won't get the JSon result, which is returned by the view. Whether you can test the view (or test the controller and then the view), or starting a servlet contrainer (with Cargo for example), and test at HTTP level, which is a good way to check what really happen.
ReferenceURL : https://stackoverflow.com/questions/21495296/spring-mvc-controller-test-print-the-result-json-string
'programing' 카테고리의 다른 글
C #을 사용하는 두 자리 소수 (0) | 2021.01.16 |
---|---|
사용자 지정 탐색 모음 스타일-iOS (0) | 2021.01.16 |
Google Colab : Google 드라이브에서 데이터를 읽는 방법은 무엇입니까? (0) | 2021.01.16 |
Angular 5 클릭 할 때마다 맨 위로 스크롤 (0) | 2021.01.16 |
정규식 유효성 검사의 10 진수 또는 숫자 값 (0) | 2021.01.16 |