Spring REST Docs 와 MockMvc 을 사용한 테스트.
회사에서 Swagger는 소스 간섭이 너무 심해서 Spring REST Docs 사용을 권장했다.
처음으로 해봐서 이것저것 많은 에러를 만나는 중!
// when
ResultActions result = mockMvc.perform(
RestDocumentationRequestBuilders.post("/admin/login")
.content(objectMapper.writeValueAsString(request))
.contentType(MediaType.APPLICATION_JSON)
.accept(MediaType.APPLICATION_JSON)
);
.with(csrf()
를 붙여서 해결했다!
// when
ResultActions result = mockMvc.perform(
RestDocumentationRequestBuilders.post("/admin/login").with(csrf()) //여기가 포인트!!!!
.content(objectMapper.writeValueAsString(request))
.contentType(MediaType.APPLICATION_JSON)
.accept(MediaType.APPLICATION_JSON)
);
아니... 403, 401은 원래 같이 다니는 애들인가요...?
메서드 위에 @WithMockUser
을 붙여준다!
컨트롤러에서 String 객체를 반환했을 때 발생하는 오류다. 따라서 일반적인 객체를 반환하도록 설정해주어야 한다.
Controller 에서
public String signUp(Dto dto) {
return "";
}
public ResponseDto signUp(Dto dto) {
return responseDto;
}
매번 @WithMockUser
나 .with(csrf()
를 붙여줘야 하는게 너무 번거로웠는데,
Security Config 파일에서 anyRequest().permitAll()
을 넣어주니 해결되었다.