스프링 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 String이 어떻게 표시되는지 보고 싶습니다.나는 이 시험 케이스를 썼다.
@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 문자열을 얻는 방법
나는 잭슨 1.8.4 코드쉐이즈 Spring 3을 사용하고 있다.
다음 코드를 사용해 보십시오.
resultActions.andDo(MockMvcResultHandlers.print());
요령은 사용법이다.andReturn()
MvcResult result = springMvc.perform(MockMvcRequestBuilders
.get("/jobsdetails/2").accept(MediaType.APPLICATION_JSON)).andReturn();
String content = result.getResponse().getContentAsString();
각 테스트 방법의 인쇄 응답을 유효하게 할 수 있습니다.MockMvc
사례.
springMvc = MockMvcBuilders.webAppContextSetup(wContext)
.alwaysDo(MockMvcResultHandlers.print())
.build();
주의:.alwaysDo(MockMvcResultHandlers.print())
위 코드의 일부입니다.이렇게 하면 각 테스트 방법에 인쇄 핸들러를 적용하지 않아도 됩니다.
아래 코드를 사용했을 때 동작했습니다.
ResultActions result =
this.mockMvc.perform(post(resource).sessionAttr(Constants.SESSION_USER, user).param("parameter", "parameterValue"))
.andExpect(status().isOk());
String content = result.andReturn().getResponse().getContentAsString();
그리고 효과가 있었다!!:d
내가 내 대답으로 다른 사람을 도울 수 있기를 바란다.
컨트롤러를 테스트하는 경우 보기에 반환되는 JSon 결과를 얻을 수 없습니다.뷰를 테스트할 수 있는지(또는 컨트롤러를 테스트한 후 뷰를 테스트할지), 서블릿컨테이너를 기동할 수 있는지(예를 들어 Cargo를 사용하여), HTTP 레벨로 테스트할 수 있는지 여부입니다.이것은 실제로 무슨 일이 일어나고 있는지를 체크하는 좋은 방법입니다.
Spring Boot을 사용하는 최신 프로젝트의 경우,MockMvc
를 사용하여 이미 구성되어 있습니다.@WebMvcTest
테스트 주석, 질문에 대한 가장 쉬운 대답은 명시적으로 추가하는 것입니다.@AutoConfigureMockMvc
와 함께printOnlyOnFailure = false
:
@WebMvcTest(MyController.class)
@AutoConfigureMockMvc(printOnlyOnFailure = false)
class MySlicedControllerTest {
// ...
}
언급URL : https://stackoverflow.com/questions/21495296/spring-mvc-controller-test-print-the-result-json-string
'programing' 카테고리의 다른 글
ASP에서 캐스케이드다운을 작성하는 가장 쉬운 방법입니다.C#이 있는 NET MVC 3 (0) | 2023.04.06 |
---|---|
WordPress 자동 업데이트를 Git에 버전 컨트롤로 삽입하는 방법 (0) | 2023.04.06 |
Angular 2 TypeScript 배열 요소 검색 방법 (0) | 2023.04.06 |
모든 WordPress 사이드바 가져오기 (0) | 2023.04.06 |
리액트 컨스트럭터 ES6 대 ES7 (0) | 2023.04.06 |