MockMvc가 항상 빈 콘텐츠()를 반환하는 이유는 무엇입니까?
나는 mockMvc로 나의 rest api를 테스트하려고 합니다.
mockMvc.perform(get("/users/1/mobile")
.accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andDo(print())
.andExpect(content().string("iPhone"))
다음 이유로 인해 테스트 실패:
java.lang.AssertionError: Response content
Expected :iPhone
Actual :
의 출력에서print()API가 실제로 예상 문자열 "아이폰"을 반환했다는 것을 알 수 있습니다.
ModelAndView:
View name = users/1/mobile
View = null
Attribute = treeNode
value = "iPhone"
errors = []
그리고 위의 빈 "실제"는 아래의 빈 "본체"에 의해 발생한다고 생각합니다.
MockHttpServletResponse:
Status = 200
Error message = null
Headers = {}
Content type = null
Body =
Forwarded URL = users/1/mobile
Redirected URL = null
Cookies = []
제 질문은 다음과 같습니다.
- 왜죠
MockHttpServletResponse's본문이 비어 있습니다. - API의 응답을 올바르게 테스트하려면 어떻게 해야 합니까?
작업 방법(사용하는 방법)@RequestMapping주석) 인스턴스 반환ModelAndView아니면 당신과 함께 일하는 것.Model함수를 사용하여 테스트해야 합니다.
.andExpect(MockMvcResultMatchers.model().attribute("phone", "iPhone"))
.andExpect(MockMvcResultMatchers.model().size(1))
MockMvcResultMatchers#content REST 조치 방법(REST 조치 방법)에 적합합니다.@RequestBody주석).
Spring MVC 및 Spring REST 컨트롤러 테스트에 대해 더 잘 이해하려면 다음 링크를 확인하십시오.
이 오류에 대한 또 다른 이유를 덧붙이자면, 그것을 발견하는 데 꼬박 하루가 걸렸습니다.저는 수행 방법을 사용하여 mockito와 mockmvc 클래스를 사용하여 APIT 테스트를 성공적으로 만들었습니다.그런 다음 코드를 복사하여 다른 서비스를 생성했고 저는 빈 몸을 반복적으로 얻기 시작했습니다.
그럼에도 불구하고, 결국 저는 한 프로젝트에서 다른 프로젝트로 복사된 각 클래스를 비교하기로 결정했습니다.내가 찾은 유일한 차이점은@EqualsAndHashCode새 컨트롤러에 의해 수신되는 내 요청 DTO의 주석.
따라서 권장 사항은 다음과 같습니다.@EqualsAndHashCodeDTO 클래스의 주석입니다.
언급URL : https://stackoverflow.com/questions/40067068/why-does-mockmvc-always-return-empty-content
'programing' 카테고리의 다른 글
| 테스트 사례에 사용되는 "setUp" 및 "tearDown" Python 방법 설명 (0) | 2023.07.21 |
|---|---|
| 스프링 REST 및 PATCH 방법 (0) | 2023.07.21 |
| MS SQL 서버에 있는 Oracle 시퀀스 (0) | 2023.07.21 |
| 셀러리에서 작업 상태를 확인하는 방법은 무엇입니까? (0) | 2023.07.21 |
| SqlAlchemy를 사용하여 id별로 데이터베이스를 쿼리하는 방법은 무엇입니까? (0) | 2023.07.21 |