오류 내용
org.springframework.restdocs.snippet.SnippetException: The following parts of the payload were not documented:
{
"data" : [ {
"memberId" : 1,
"email" : "dodo03@gmail.com",
"name" : "dodo3",
"phone" : "010-3333-3333",
"memberStatus" : "활동중",
"stamp" : 0
}, {
"memberId" : 2,
"email" : "dodo04@gmail.com",
"name" : "dodo4",
"phone" : "010-4444-4444",
"memberStatus" : "활동중",
"stamp" : 0
} ],
"pageInfo" : {
"page" : 1,
"size" : 2,
"totalElements" : 2,
"totalPages" : 1
}
}
Fields with the following paths were not found in the payload: [data.memberId, data.email, data.name, data.phone, data.memberStatus, data.stam
오류 원인
데이터가 전송되는 과정에서 문서화가 안돼서 발생하는 오류로 스니펫 생성에 문제가 있을 경우 발생한다.
When documenting request parameters, the test will fail if an undocumented request parameter is used in the request. Similarly, the test will also fail if a documented request parameter is not found in the request.
- 리퀘스트 파라미터를 문서화하지 않았을 때
- 문서화된 리퀘스트 파라미터가 리퀘스트에 없을 때
오류 해결
내 경우 responseFields에 pageInfo 데이터가 누락되어 에러가 발생했다.
actions.andExpect(status().isOk())
.andExpect(jsonPath("$.data[0].name").value(members.get(0).getName()))
.andDo(document(
"get-members",
getResponsePreProcessor(),
requestParameters(
parameterWithName("page").description("페이지 넘버"),
parameterWithName("size").description("데이터 수")
),
responseFields(
List.of(
//data 배열로 변경
fieldWithPath("data").type(JsonFieldType.ARRAY).description("결과 데이터"),
fieldWithPath("data[].memberId").type(JsonFieldType.NUMBER).description("회원 식별자"),
fieldWithPath("data[].email").type(JsonFieldType.STRING).description("이메일"),
fieldWithPath("data[].name").type(JsonFieldType.STRING).description("이름"),
fieldWithPath("data[].phone").type(JsonFieldType.STRING).description("휴대폰 번호"),
fieldWithPath("data[].memberStatus").type(JsonFieldType.STRING).description("회원 상태"),
fieldWithPath("data[].stamp").type(JsonFieldType.NUMBER).description("스탬프 갯수"),
//pageInfo 추가
fieldWithPath("pageInfo").type(JsonFieldType.OBJECT).description("페이지 정보"),
fieldWithPath("pageInfo.page").type(JsonFieldType.NUMBER).description("페이지 정보"),
fieldWithPath("pageInfo.size").type(JsonFieldType.NUMBER).description("사이즈 정보"),
fieldWithPath("pageInfo.totalElements").type(JsonFieldType.NUMBER).description("전체 조회 건 수"),
fieldWithPath("pageInfo.totalPages").type(JsonFieldType.NUMBER).description("전체 페이지 수")
)
)
));